JAVA面試題(7)

1.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

A.11—— 11
B.11 ——11
C.12——12
D.12 ——11
答案: D
解析:
Math.round(11.5)12;Math.round(-11.5)-11;round方法返回與參數最接近的長整數,參數加1/2後求其floor

2.代碼如下

1.Float pi = new Float(3.14f);
2. if (pi > 3) {
3. System.out.print("pi is bigger than 3. ");
4. }
5. else {
6. System.out.print("pi is not bigger than 3. ");
7. }
8. finally {
9. System.out.println("Have a nice day.");
10. }

輸出結果是()
A. 編譯失敗。
B. pi is bigger than 3.
C. 在運行時發生n個異常。
D. pi isbigger than 3. Have a nice day. E. pi is not bigger than 3. Have a
nice day.
答案: A
解析: finally不是用在這種地方,僅僅在try/catch/finally內使用。

3.數組有沒有length()這個方法? String有沒有length()這個方法

A. 有 沒有
B. 有 有
C. 沒有 沒有
D. 沒有 有
答: D
解析:
數組沒有length()這個方法,有length的屬性。String有有length()這個方法

4.List, Set, Map哪一個不是繼承自Collection接口?

A. List
B. Set
C. Map
D. 都繼承自Collection接口
答: C
解析:
List,Set繼承自Collection接口,Map不是。

5.是否可以從一個static方法內部發出對非static方法的調用?

A. 是
B. 否
答: B
解析: 不可以,如果其中包含對象的method();不能保證對象初始化.

6.下列哪個敘述是正確的()

A. 創建File對象可能發生異常。 B
. BufferedRead流可以指向FileInputStream流
C.BufferedWrite流可以指向FileWrite流
D.RadomAccessFile流一旦指向文件,就會刷新該文件
答案:C
解析:創建File對象不會發生異常,創建新文件的時候會發生IOException異常。
BufferedRead流只能指向FileRead流,它們都是以字符讀取數據的。 RadomAccessFile流指向文件時,不刷新文件。

7.爲了向文件hello.txt尾加數據,下列哪個是正確創建指向hello.txt的流?

A. try{ OutputStream out = new FileOutputStream(“hello.txt”); 
} 
catch(IOException e){} 

B. try { OutputStream out = new FileOutputStream(“hello.txt”,true); 
} 
catch(IOException e){} 

C.try{ OutputStream out = new FileOutputStream(“hello.txt”,false); 
} 
catch(IOException e){} 

D.try{ OutputStream out = new OutputStream(“hello.txt”,true); 
} 
catch(IOException e){}

答案:B
FileOutputStream類是文件字節輸出流,它是OutputStream類的子類,所以FileOutputStream的實例方法都是從OutputStream類繼承來的,那麼在這道題中需要使用上轉型對象才能調用重寫父類的方法,排除D。ABC在於FileOutpurStream的構造方法的不同,題目要求向文件尾加數據,A選項是具有刷新功能的構造方法,也就是會覆蓋掉原來文件的數據,B選項參數爲true表示不會刷新所指向的文件,而是從文件的末尾開始向文件寫入數據,取值爲false,輸出流將刷新所指向的文件。

8.下面關於Java類的構造方法的說法中正確的是:( )

A. 一個類至少有一個構造方法
B. 構造方法的返回值類型必須是void
C. 構造方法的可見性修飾符必須是public
D. 構造方法必須顯式的定義 正確答案: A 解析:
構造方法是一種特殊的方法:它必須具備和所在類相同的名字;沒有返回值類型,甚至連void也沒有;構造方法是在創建一個對象使用new操作符時調用的,作用是初始化對象。
造方法可以默認提供而不顯式定義。
簡單的說就是,每個類至少有一個構造方法,即使沒有寫出來,即可以不用顯示定義。她沒有返回值,連void都沒有,但是也可以使用private修飾構造方法。

9.爲什麼構造方法裏 this 或者 super 函數調用必須放在第一行且無法共存?
答:super 方法在構造函數的第一行原因是子類有可能訪問了父類對象,比如在構造函數

中使用父類對象的成員函數和變量,在成員初始化使用了父類,在代碼塊中使用了父類等,所以放在第一行可以保證在子類可以訪問父類對象之前完成對父類對象的初始化。

this 方法在構造函數的第一行原因是爲保證父類對象初始化的唯一性,因爲假設類 B 是類 A 的子類,如果 this
方法可以在構造函數的任意行使用則首先程序運行到構造函數 B() 的第一行發現沒有調用 this() 和 super(),就自動在第一行補齊了
super() 方法(這是 java 默認的機制),以此完成了對父類對象的初始化,然後返回子類的構造函數繼續執行,當運行到構造函數 B()
的 this(參數) 調用行時, 調用 B 類對象的另一個構造方法 B(參數),在 B(參數)
中還會對父類對象再次初始化,這就造成了對資源的浪費,也有可能造成某些意想不到的結果,所以 this
方法不能出現在構造方法除第一行以外的其他行。

這也就解釋了爲啥在構造方法裏面 this 與 super 方法不能同時存在的原因。

10.Java 構造方法能否被重寫和重載?

答:重寫是子類方法重寫父類的方法,重寫的方法名不變,而類的構造方法名必須與類名一致,假設父類的構造方法如果能夠被子類重寫則子類類名必須與父類類名一致纔行,所以
Java 的構造方法是不能被重寫的。而重載是針對同一個的,所以構造方法可以被重載。

如果覺得我寫的還行,請關注我的公衆號,每天定時推送乾貨.
在這裏插入圖片描述

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