問題闡述
在進(jìn)行程序設(shè)計時,經(jīng)常需要進(jìn)行一些算術(shù)運算,有的運算能夠通過編譯器編譯,而有的運算則不能通過編譯器編譯。那么能正確編譯“short s
= 1;s = s +1;“嗎?
解答
Java 語言中默認(rèn)的整數(shù)類型為 int,代碼中 s 是 short 類型的變量,但是與它相加的整數(shù) 1 卻是默認(rèn)數(shù)據(jù)類型
int,那么相加的結(jié)果也會是 int 類型,int 類型必須經(jīng)過強制類型轉(zhuǎn)換才能賦值給 short類型的變量。
因此下面的語句將無法正確編譯,因為 s 與 int 類型數(shù)據(jù)求和后是 int 類型的數(shù)值,無法賦值給 short 類型的變量。
short
s = 1;
s = s + 1;
在 Eclipse 編輯器中,在上面代碼段的 s + 1
處顯示有紅色的波浪線,將鼠標(biāo)移動到紅色波浪線處,將顯示如圖 3.8 所示類型不匹配的錯誤提示信息。
點評
本問題主要考查讀者對不同類型數(shù)據(jù)的計算以及對數(shù)值默認(rèn)類型的掌握,在 Java 語言中,整數(shù)的默認(rèn)類型是 int
型,浮點數(shù)的默認(rèn)類型是 double 型。對于不同類型的數(shù)值進(jìn)行計算時,結(jié)果總是轉(zhuǎn)換為精度最高的數(shù)據(jù)類型,因此將計算結(jié)果賦值給變量時,這個變量的類型的精度不能低于參加計算的精度最高的數(shù)據(jù)類型,否則就會發(fā)生編譯錯誤。