簡單的就不說了,說一下易錯點:
也就是下面的第三點
/**
* 強制類型轉換
* 1.特點: 代碼需要進行特殊的格式處理,不能自動完成
* 2.特點: 範圍小的類型 範圍小的變量名 = (範圍小的類型) 範圍大的數據;
* 注意事項:
* 1. 強制類型轉換一般不推薦使用,會發生精度丟失,數據溢出
* 2. byte/short/char都可以發生數學運算,例如"+"
* 3. byte/short/char在進行計算的時候,首先被提升成爲int類型,再進行計算
* 4. boolean類型不能發生數據類型轉換
*/
public class Demo02DataType {
public static void main(String[] args) {
int num = (int) 100L;
System.out.println(num);
int num1 = (int) 6000000000L;
System.out.println(num1);
int num2 = (int) 3.14;
System.out.println(num2);
// 注意第三點
byte num3 = 40;
byte num4 = 50;
byte result = num3 + num4;
System.out.println(result);
}
}
byte num3 = 40;
byte num4 = 50;
byte result = num3 + num4;
System.out.println(result);
我們說過 byte/short/char進行計算,首先會被提升爲 int類型
那麼 num3 + num4 就變成了兩個int類型的數的計算,結果也是int 。
int --> byte,就用到了我們這裏的強制類型轉換。是不能自動觸發的。
tips:
忽略這裏的
byte num3 = 40;
byte num4 = 50;
這種情況。
所以這裏需要修改成
int result = num3 + num4;
或者
byte result = (byte)(num3 + num4);
一般情況下,我們不建議強制類型轉換
所以最優的是
int result = num3 + num4;
注意
注意
注意
有一種情況,編譯器會默認發生強制類型轉換
byte num1 = 30;
num1 += 5.1;
System.out.println(num1); // 35
這實際上是編譯器替我們做了強制類型轉換
num1 = num1 + 5.6;
byte = byte + double;
byte = double + double;
byte = (byte)(double + double);
所以最後的精度被省略,爲35
下面這種情況是強制轉換的數據溢出:
num1 = num1 + 1000;
byte = byte + double;
byte = double + double;
byte = (byte)(double + double);
所以最後的精度被省略,爲35