整型、實型(常量)、字符型數據可以混合運算。運算中,不同類型的數據先轉化為同一類型,然后進行運算。
轉換從低級到高級。
自動類型轉換必須滿足轉換前的數據類型的位數要低於轉換后的數據類型,例如: short數據類型的位數為16位,就可以自動轉換位數為32的int類型,同樣float數據類型的位數為32,可以自動轉換為64位的double類型。
數據類型轉換必須滿足如下規則:
-
1. 不能對boolean類型進行類型轉換。
-
2. 不能把對象類型轉換成不相關類的對象。
-
3. 在把容量大的類型轉換為容量小的類型時必須使用強制類型轉換。
-
4. 轉換過程中可能導致溢出或損失精度,例如:
int i =128; byte b = (byte)i;
因為 byte 類型是 8 位,最大值為127,所以當 int 強制轉換為 byte 類型時,值 128 時候就會導致溢出。
-
5. 浮點數到整數的轉換是通過舍棄小數得到,而不是四舍五入,例如:
(int)23.7 == 23; (int)-45.89f == -45
規律一:小的類型自動轉化為大的類型
byte b = 125; int i = b;
規律二:整數類型可以自動轉化為浮點類型,可能會產生舍入誤差
short s = 7; long l = s; long l = 500; // 500是一個整數,整數默認為int,int的范圍比long小,所以可以自動轉換 float f = 56.71F; double d = f; int i = 300; double d = i;
規律三:字符可以自動提升為整數
int i = 500; float f = i; // i是int類型,int的取值范圍比float小,所以int可以自動轉化為float long s = 259L; float f = s; float f = -25; // -25是整數 char c = ‘a’; int i = c;