1. 程式人生 > >Java數據類型——面試題

Java數據類型——面試題

精確 賦值 數據 向下轉型 down 類型 ring 1.7 不可

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; 才可以。

Java數據類型——面試題