Java數據類型——面試題


1、short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 +=1;有什么錯?

答:對於short s1=1;s1=s1+1來說,在s1+1運算時會自動提升表達式的類型為int,那么將int賦予給short類型的變量s1會出現類型轉換錯誤。

對於short s1=1;s1+=1來說 +=是java語言規定的運算符,java編譯器會對它進行特殊處理,因此可以正確編譯。

 

2、char類型變量能不能儲存一個中文的漢子,為什么?

char類型變量是用來儲存Unicode編碼的字符的,unicode字符集包含了漢字,所以char類型當然可以存儲漢字的,還有一種特殊情況就是某個生僻字沒有包含在

unicode編碼字符集中,那么就char類型就不能存儲該生僻字。

 

3、Integer和int的區別

int是java的8種內置的原始數據類型。Java為每個原始類型都提供了一個封裝類,Integer就是int的封裝類。

int變量的默認值為0,Integer變量的默認值為null,這一點說明Integer可以區分出未賦值和值為0的區別,比如說一名學生沒來參加考試,另一名學生參加考

試全答錯了,那么第一名考生的成績應該是null,第二名考生的成績應該是0分。關於這一點Integer應用很大的。

Integer類內提供了一些關於整數操作的一些方法,例如上文用到的表示整數的最大值和最小值。

 

4、switch語句能否作用在byte上,能否作用在long上,能否作用在string上?

byte的存儲范圍小於int,可以向int類型進行隱式轉換,所以switch可以作用在byte上

long的存儲范圍大於int,不能向int進行隱式轉換,只能強制轉換,所以switch不可以作用在long上

string在1.7版本之前不可以,1.7版本之后switch就可以作用在string上了。

 

5、能否在不進行強制轉換的情況下將一個 double 值賦值給 long 類型的變量?

答:不行,我們不能在沒有強制類型轉換的前提下將一個 double 值賦值給 long 類型的變量,因為 double 類型的范圍比 long 類型更廣,所以必須要進行強制轉換。

 

6、java 中 3*0.1 == 0.3 將會返回什么?true 還是 false?

答:false,因為浮點數不能完全精確的表示出來,一般都會損失精度。

 

 

7、java 中 float f = 3.4; 是否正確?

答:不正確,3.4 是雙精度數,將雙精度型(double)賦值給浮點型(float)屬於向下轉型(down-casting,也稱為窄化)會造成精度損失,因此需要強制類型轉換 float f = (float)3.4; 或者寫成 float f = 3.4F; 才可以。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM