強制類型轉換;
特點:代碼需要進行特殊的格式處理,不能自動完成。
格式:范圍小的類型,范圍小的變量名 =(范圍小的類型) 原本范圍大的數據。
例如 int num =100L;
int num = (int) 100L; 注意:右邊那個數據(100L)不要超出左邊類型的范圍,否則會溢出。
例題1:
long強制轉換為int類型;
int num2 =(int) 6000000000(L);
sout............(num2);
結果; 1705032704.
原因;int 的取值21億,但60億以經超出范圍,所以溢出了,就導致結果是17億多。
char zhifu = 'A';
sout..................(zhifu + 1);
結果:66
這是一個字符變量, 里面是大寫字母A,66也是大寫字母A被加了1后 才得到的66, 那原本就是65,
計算機的底層會用一個數字(二進制)來代表字符A, 就是65.
一但char類型進行了數字運算,那么字符就會按照一定的規則翻譯成功為一個數字。
例題2:
double強制轉換int類型;
int num3 = (int) 3.9;
sout....................(num3);
結果是 3.
原因; int 是整數型的, 但3.9的int經過轉換的話,那么只能保留整數3。
@@強制類型的轉換一般不推薦使用,因有可能發生精度損失,數據溢出。
@@@ byte short char 這三類型都可以發生數學運算,例如加法" + ".
byte short chat 這三類型在運算的時候。都會被首先提升成為 int 類型,然后再進行計算
boolean 類型不能發生數據類型轉換。
byte +short => int +int => int
byte num = 40;
short num1 = 60;
short + resulf = (short)(num +num1);
sout ........................(resulf);
結果; 100,
int強制轉換為 short: 注意必須保證邏輯上真實大小本來就沒有超出short范圍否則會發生數據溢出。
補充點。
------------------------------------------------
原:
char zifu = 'I';
sout ......................(zifu + 0);
結果;49
簡化后;
char zifu = 'c'; //左側是int類型。 右邊是char類型。
int num = zifu; //char => int 確實是從小到大。
sout....................(num); //發生了自動類型轉變。
結果; 99。
