Java常考面試題4--Java強制型別轉換
阿新 • • 發佈:2019-02-04
問: float f=3.4;是否正確? 答: 不正確。3.4是雙精度數,將雙精度型(double)賦值給浮點型(float)屬於下轉型(down-casting,也稱為窄化)會造成精度損失,
因此需要強制型別轉換float f =(float)3.4; 或者寫成float f =3.4F;。
拓展: 在java裡面,沒小數點的預設是int,有小數點的預設是 double;byte、short、int、long、float、double
向上轉型會自動進行 float a = 1; 執行結果是1.0
向下轉型需要強制轉換 float a = (float)3.4; int a = (int) 11.1;
隱含的強制型別轉換:
問:
short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1;有錯嗎?
答:
對於short s1 = 1; s1 = s1 + 1;
由於1是int型別,因此s1+1運算結果也是int 型,需要強制轉換型別才能賦值給short型。
而short s1 = 1; s1 += 1;可以正確編譯,因為s1+= 1; 相當於s1 = (short)(s1 + 1); 其中有隱含的強制型別轉換。