JAVA基本型別轉換
阿新 • • 發佈:2021-12-22
基本型別轉換有一下要點:
- 多個型別參與運算時,整型、浮點型、字元型都可以參與運算,唯獨布林型別不能參與運算
- 在型別轉換時,涉及到型別級別,詳細如下:級別從低到高:byte,short,char-->int-->long-->float-->double
- 型別級別的作用:當一個表示式中存在多個型別時,都自動轉換為表示式中級別最高的那個型別進行計算
- 在進行賦值運算的時候:型別級別也有用處,詳細如下:
- 如左邊型別級別=右邊型別級別,則直接賦值
- 如左邊型別級別>右邊型別級別,則直接自動轉換
- 如左邊型別級別<右邊型別級別,則需要做強制型別轉換
- 強制型別轉換是資料"失真“,舉例如下”
double d1 = 6; System.out.println(d1);// 6.0 int i1 = (int) 3.14; System.out.println(i1);// 3 // double d2 = 3+3.14F+3.14159+'a'+true;// 報錯 double d3 = 30+3.14F+3.14159+'a';// 左邊型別級別=右邊型別級別,則直接賦值 int i2 = (int) (30+3.14F+3.14159+'a');// 左邊型別級別<右邊型別級別,則需要做強制型別轉換 float f1 = 30+3.14F+'a';// 左邊型別級別=右邊型別級別,則直接賦值 doubled4 = 30+3.14F+'a';// 左邊型別級別=右邊型別級別,則直接賦值 System.out.println(30+3.14F+3.14159+'a');// 133.28158938964845 System.out.println(d3);// 133.28158938964845 System.out.println(i2);// 133 System.out.println(30+3.14F+'a');//130.14 System.out.println(f1);// 130.14 System.out.println(d4);// 130.13999938964844 //強制型別轉換是資料失真 byte b1 = (byte) 258; System.out.println(b1);// 2 // 解答:十進位制258放在記憶體中儲存情況如下,(258為整型,沒指定型別,預設為int型別,佔4個位元組,一個位元組8個記憶體位) // 00000000 00000000 00000001 00000010 // 強轉為byte型別後,記憶體分佈如下:(byte型別佔1個位元組,直接砍掉左側三個位元組) // 00000010 // 00000010轉換為十進位制為數字2