例如,當程序中需要將 double 型變量的值賦給一個 int 型變量,該如何實現呢?
顯然,這種轉換是不會自動進行的!因為 int 型的存儲范圍比 double 型的小。此時就需要通過強制類型轉換來實現了。
public class HelloWorld{ public static void main(String[] args) { double heightAvg1=176.2; int heightAvg2=(int)heightAvg1; System.out.println(heightAvg1); System.out.println(heightAvg2); } }
一開始heightAvg1是double類型的,轉換成int類型的話要(int)heightAvg1
規律一:當把大的類型轉化為小的類型的時候,因為補碼的換算問題,所以可能會產生一些想不到數據
int i = 35; byte b = (byte)i;
運行結果:35
int i = 128; byte b = (byte)i;
運行結果:-128
規律二:小數在轉化為整數的時候是舍棄小數位
double d = 6.4; int i = (int)d;
運行結果:6
擴展:數據的原反補三碼
數據類型的最高位是符號位 --- 如果最高位是0,則表示一個正數;如果最高位是1,則表示一個負數。
計算機中存儲的是數據的補碼,計算的也是數據的補碼
直接計算出來的二進制數字是數據的原碼
如果是正數,那么原反補三碼一致
int i = 7;
00000000 00000000 00000000 00000111 原碼
00000000 00000000 00000000 00000111 反碼
00000000 00000000 00000000 00000111 補碼
如果是負數,那么反碼是在原碼的基礎上,最高位不變,其余位0<->1;補碼是在反碼的基礎上+1
int j = -9;
10000000 00000000 00000000 00001001 原碼
11111111 11111111 11111111 11110110 反碼
11111111 11111111 11111111 11110111 補碼
注意:規定用-0表示當前類型的最小值