前言:Java屬於強類型語言
強類型語言:要求變量的使用要嚴格符合規定,所有變量都必須先定義后才能使用
優勢就是安全性高,但劣勢速度慢
數據類型
Java的數據類型分為兩大類:
-
基本類型(primitive type)
-
引用類型(reference type)
Java中定義了3類8種基本數據類型
-
數值型- byte、 short、int、 long、float、 double
-
字符型- char
-
布爾型-boolean
-
基本數據類型字典表:
基本數據類型 | 占字節數 | 占位數 | 最小值 | 最大值 | 包裝類型 | 默認值 |
---|---|---|---|---|---|---|
boolean | 1字節 | 8位 | Boolean | false | ||
byte | 1字節 | 8位 | -128 | 127 | Byte | 0 |
char | 2字節 | 16位 | \u0000 | \uffff | Character | \u0000 |
short | 2字節 | 16位 | -2^15 | 2^15-1 | Short | 0 |
int | 4字節 | 32位 | -2^31 | 2^31-1 | Integer | 0 |
float | 4字節 | 32位 | Float | 0.0f | ||
long | 8字節 | 64位 | -2^63 | 2^63-1 | Long | 0L |
double | 8字節 | 64位 | Double | 0.0d |
示例:
public class Test {
public static void main(String[] args) {
// byte
System.out.println("基本類型:byte 二進制位數:" + Byte.SIZE);
System.out.println("包裝類:java.lang.Byte");
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
// short
System.out.println("基本類型:short 二進制位數:" + Short.SIZE);
System.out.println("包裝類:java.lang.Short");
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// int
System.out.println("基本類型:int 二進制位數:" + Integer.SIZE);
System.out.println("包裝類:java.lang.Integer");
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// long
System.out.println("基本類型:long 二進制位數:" + Long.SIZE);
System.out.println("包裝類:java.lang.Long");
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
// float
System.out.println("基本類型:float 二進制位數:" + Float.SIZE);
System.out.println("包裝類:java.lang.Float");
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
// double
System.out.println("基本類型:double 二進制位數:" + Double.SIZE);
System.out.println("包裝類:java.lang.Double");
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
// char
System.out.println("基本類型:char 二進制位數:" + Character.SIZE);
System.out.println("包裝類:java.lang.Character");
// 以數值形式而不是字符形式將Character.MIN_VALUE輸出到控制台
System.out.println("最小值:Character.MIN_VALUE="
+ (int) Character.MIN_VALUE);
// 以數值形式而不是字符形式將Character.MAX_VALUE輸出到控制台
System.out.println("最大值:Character.MAX_VALUE="
+ (int) Character.MAX_VALUE);
}
}
編譯以上代碼輸出結果如下:
備注:
Float和Double的最小值和最大值都是以科學記數法的形式輸出的,結尾的"E+數字"表示E之前的數字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。
實際上,JAVA中還存在另外一種基本類型 void,它也有對應的包裝類 java.lang.Void,不過我們無法直接對它們進行操作。
引用數據類型:
-
在Java中,引用類型的變量非常類似於C/C++的指針。引用類型指向一個對象,指向對象的變量是引用變量。這些變量在聲明時被指定為一個特定的類型。變量一旦聲明后,類型就不能被改變了。
-
對象、數組都是引用數據類型。
-
所有引用類型的默認值都是null。
-
一個引用變量可以用來引用任何與之兼容的類型。
學習筆記:
- Java 里使用 long 類型的數據一定要在數值后面加上 L,否則將作為整型解析
- 在Java的世界里,如果比int類型小的類型做運算,Java在編譯的時候就會將它們統一強轉成int類型。當是比int類型大的類型做運算,就會自動轉換成它們中最大類型那個。
- Java默認有小數部分的數為double類型,所以要將一個有小數部分的常量賦值給float類型的變量時,需要在常量后方寫上“f”、“F”,系統才將之認為是一個float類型的值。
- 【內存溢出】:在 Java 中,只有數字類型才能參與運算。但是每個數據類型都有他的取值范圍。
例如 byte 數據類型,它的取值范圍為 -128 - 127 。
當我們使用 byte b = 128; 時,肯定會報錯。
但是使用 byte b = 127+1; 並不會報錯。
而且運算的結果為 -128。
我們可以向數據類型的取值范圍看作是一個圓,每多一個數據向前移動一個,當數據達到最大值時,我們再加 1,可以就會變成最小值,這就是數據的溢出。
- 【類型轉換】:整型、實型(常量)、字符型數據可以混合運算。運算中,不同類型的數據先轉化為同一類型,然后進行運算。轉換是從低級到高級。
注意:1.不能對布爾值進行轉換
2.不能把對象類型轉換為不相干的類型
3.在把大容量轉換到小容量的時候,要強制轉換
4.轉換的時候可能存在內存溢出,或者精度問題
- byte、int、long、和short都可以用十進制、16進制以及8進制的方式來表示。
當使用字面量的時候,前綴 0 表示 8 進制,而前綴 0x 代表 16 進制, 而前綴 0b 便是二進制。
例如:
int a1 = 10; //十進制 => 輸出結果10
int a2 = 010; //八進制 => 輸出結果8
int a3 = 0x10; //十六進制 => 輸出結果16
int a4 = 0b10; //二進制 => 輸出結果2
int a1 = 10; //十進制 => 輸出結果10
int a2 = 010; //八進制 => 輸出結果8
int a3 = 0x10; //十六進制 => 輸出結果16
int a4 = 0b10; //二進制 => 輸出結果2
編譯並運行上面代碼,輸出結果如下: