Java 面試題 -- 基礎(二)

1.String 是最基本的數據類型嗎?

不是。Java 中的基本數據類型只有 8 個 :byte、short、int、long、float、double、char、boolean;除了基本類型(primitive type),剩下的都是引用類型(referencetype),所以String屬於引用類型。Java 5 以後引入的枚舉類型也算是一種比較特殊的引用類型。

2.float f=3.4;是否正確?

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

3.short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1;有錯嗎?

對於 short s1 = 1; s1 = s1 + 1;由於 1 是 int 類型,因此 s1+1 運算結果也是 int型,需要強制轉換類型才能賦值給 short 型。而 short s1 = 1; s1 += 1;可以正確編譯,因爲 s1+= 1;相當於 s1 = (short(s1 + 1);其中有隱含的強制類型轉換。

4.int與Integer有什麼區別?

(1)Integer是int的包裝類;int是基本數據類型; 
(2)Integer變量必須實例化後才能使用;int變量不需要; 
(3)Integer實際是對象的引用,指向此new的Integer對象;int是直接存儲數據值 ; 
(4)Integer的默認值是null;int的默認值是0。

5.&和&&有什麼區別?

&和&&都可以用作邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都爲true時,整個運算結果才爲true,否則,只要有一方爲false,則結果爲false。&&還具有短路的功能,即如果第一個表達式爲false,則不再計算第二個表達式,
例如,對於if(str != null && !str.equals(“”))表達式,當str爲null時,後面的表達式不會執行,所以不會出現NullPointerException。如果將&&改爲&,則會拋出NullPointerException異常。
If(x==33 & ++y>0) y會增長,If(x==33 && ++y>0)不會增長
&還可以用作位運算符,當&操作符兩邊的表達式不是boolean類型時,&表示按位與操作,我們通常
使用0x0f來與一個整數進行&運算,來獲取該整數的最低4個bit位,例如,0x31 & 0x0f的結果爲0x01。

6.用最有效率的方法計算 2 乘以 8? 

2 << 3(左移 3 位相當於乘以 2 的 3 次方,右移 3 位相當於除以 2 的 3 次方)。

7.數組有沒有 length()方法?String 有沒有 length()方法?

數組沒有 length()方法 ,有 length 的屬性。String 有 length()方法。JavaScript中,獲得字符串的長度是通過 length 屬性得到的,這一點容易和 Java 混淆。

8.構造器(constructor)是否可被重寫(override)?

構造器不能被繼承,因此不能被重寫,但可以被重載。

9.是否可以繼承 String 類?

String 類是 final 類,不可以被繼承。

10.char 型變量中能不能存貯一箇中文漢字,爲什麼?

char 類型可以存儲一箇中文漢字,因爲 Java 中使用的編碼是 Unicode(不選擇任何特定的編碼,直接使用字符在字符集中的編號,這是統一的唯一方法),一個 char 類型佔 2 個字節(16 比特),所以放一箇中文是沒問題的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章