java基礎語法之基本資料型別轉換
阿新 • • 發佈:2019-01-10
隱式轉化
數值型別在記憶體中直接儲存其本身的值,對於不同的數值型別,記憶體中會分配相應的大小去儲存。隱式轉換也叫作自動型別轉換, 由系統自動完成.從儲存範圍小的型別到儲存範圍大的型別.byte ,short,char,->int->long->float->double,其中其中,(byte型不能自動提升到char,char不能自動提升到short(強制轉換不影響)。)byte ,short,char都會自動提升到int型別進行計算。
強制轉換
當我們需要將數值範圍較大的數值型別賦給數值範圍較小的數值型別變數時,由於此時可能會丟失精度(1講到的從int到k型的隱式轉換除外),因此,需要人為進行轉換。我們稱之為強制型別轉換。強制轉換需要加轉換符。如果強制轉換超出了被賦值型別取值的範圍就可以出現,與我們期望的值不同的結果。
Demo程式碼:
class Test{ public static void main( String[] args){ // 隱式轉換 int a = 5; byte b = 6; a = a + b ; //先是byte b 系統自動提升為int型別,在計算結果為11,最後在賦值給int型別的a System.out.println(a);//結果為11 // 強制轉換 int c = 5 ; short d = 6 ; d = (short)(c + d) ; /* 先是short 型別的d ,自動提升為int型別,計算結果為int型別的11,最後在賦值給 short型別的d,此時就需要強制轉換符(short) ,否則會報錯 */ System.out.println(d) ; //結果為11 byte e = (byte) (166+454); // 強制轉換超出範圍 會得到與我們期望不同的值 System.out.println(e); // 結果為108 } }
注意:在Java中,整數型別(byte/short/int/long)中,對於未宣告資料型別的整形,其預設型別為int型。在浮點型別(float/double)中,對於未宣告資料型別的浮點型,預設為double型。