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