1逮京、如下程序語句是否有問題箍邮?
short s1 = 1;
s1 = s1 + 1; ? ?//1
short s2 = 1;
s2 += 1; ? ?//2
對于注釋1來說坡慌,在s1+1運(yùn)算時(shí)會(huì)自動(dòng)提升表達(dá)式的類型為int杖剪,所以將int賦值給short類型的變量s1會(huì)出現(xiàn)類型傳喚錯(cuò)誤菩收,正常情況下無法通過編譯雇卷,IDE會(huì)有錯(cuò)誤提示鬓椭,除非主動(dòng)加上強(qiáng)轉(zhuǎn)。對于注釋2來說关划,+=是java語法規(guī)定的運(yùn)算符小染,所以java編譯器會(huì)默認(rèn)對它進(jìn)行特殊處理,因此可以正確編譯執(zhí)行贮折。
2裤翩、java中 Integer 和 int 的區(qū)別?
int是java內(nèi)置基本數(shù)據(jù)類型之一调榄,java為每個(gè)基本類型都提供了一個(gè)封裝類踊赠,Integer就是int的封裝類;int變量的默認(rèn)值為0每庆,Integer變量的默認(rèn)值為null筐带,所以Integer可以區(qū)分出未賦值和值為0的區(qū)別;Integer類內(nèi)部提供了一些關(guān)于整數(shù)操作的方法
3缤灵、java中char類型變量能不能存儲(chǔ)一個(gè)中文的漢字伦籍?
java的char類型變量是用來存儲(chǔ)Unicode編碼字符的,Unicode字符集包含了漢字腮出,所以char類型自然就能存儲(chǔ)漢字帖鸦,但是在某些他叔情況下某個(gè)生僻字可能沒有包含在Unicode編碼字符集中,這種情況下char類型就不能存儲(chǔ)該漢字了
4利诺、java 的 switch 語句能否作用在 byte 類型變量上富蓄,能否作用在 long 類型變量上,能否作用在 String 類型變量上慢逾?
由于 byte 的存儲(chǔ)范圍小于 int立倍,可以向 int 類型進(jìn)行隱式轉(zhuǎn)換,所以 switch 可以作用在 byte 類型變量上侣滩;由于 long 的存儲(chǔ)范圍大于 int口注,不能向 int 進(jìn)行隱式轉(zhuǎn)換,只能強(qiáng)制轉(zhuǎn)換君珠,所以 switch 不可以作用在 long 類型變量上寝志;對于 String 類型變量在 Java 1.7 版本之前不可以,1.7 版本之后是可以的。(switch支持的類型一共有:byte材部、short毫缆、int、char乐导、String)
5、java 中 3*0.1 == 0.3 將會(huì)返回什么物臂?true 還是 false蛾狗?
false,因?yàn)楦↑c(diǎn)數(shù)不能完全精確的表示出來蒲牧,一般都會(huì)損失精度。
6挎扰、java 中 float f = 3.4; 是否正確?
不正確官撼,3.4 是雙精度數(shù),將雙精度型(double)賦值給浮點(diǎn)型(float)屬于向下轉(zhuǎn)型(down-casting续搀,也稱為窄化)會(huì)造成精度損失彪杉,因此需要強(qiáng)制類型轉(zhuǎn)換 float f = (float)3.4; 或者寫成 float f = 3.4F; 才可以。在Java中,默認(rèn)的小數(shù)都是double類型残拐。