1. 程式人生 > >Java常考面試題4--Java強制型別轉換

Java常考面試題4--Java強制型別轉換

問:    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);  其中有隱含的強制型別轉換。