最新精選Java面試題及答案,Java基礎面試題答案精選(九)
阿新 • • 發佈:2021-08-23
上圖是我整理的Java面試題合集,包攬了基本所有技術棧:完整版Java面試題合集附答案,高清PDF下載
1. Java多型的理解
- 多型是繼封裝、繼承之後,面向物件的第三大特性。
- 多型現實意義理解:
- 現實事物經常會體現出多種形態,如學生,學生是人的一種,則一個具體的同學張三既是學生也是人,即出現兩種形態。
- Java作為面向物件的語言,同樣可以描述一個事物的多種形態。如Student類繼承了Person類,一個Student的物件便既是Student,又是Person。
- 多型體現為父類引用變數可以指向子類物件。
- 前提條件:必須有子父類關係。
注意:在使用多型後的父類引用變數呼叫方法時,會呼叫子類重寫後的方法。
- 多型的定義與使用格式
定義格式:父類型別 變數名=new 子類型別();
2. 在Java中定義一個不做事且沒有引數的構造方法的作用
- Java程式在執行子類的構造方法之前,如果沒有用super()來呼叫父類特定的構造方法,則會呼叫父類中“沒有引數的構造方法”。因此,如果父類中只定義了有引數的構造方法,而在子類的構造方法中又沒有用super()來呼叫父類中特定的構造方法,則編譯時將發生錯誤,因為Java程式在父類中找不到沒有引數的構造方法可供執行。解決辦法是在父類里加上一個不做事且沒有引數的構造方法。
3. 面向物件和麵向過程的區別
-
面向過程:
-
優點:效能比面向物件高,因為類呼叫時需要例項化,開銷比較大,比較消耗資源;比如微控制器、嵌入式開發、Linux/Unix等一般採用面向過程開發,效能是最重要的因素。
-
缺點:沒有面向物件易維護、易複用、易擴充套件
-
面向物件:
-
優點:易維護、易複用、易擴充套件,由於面向物件有封裝、繼承、多型性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易於維護
-
缺點:效能比面向過程低
面向過程是具體化的,流程化的,解決一個問題,你需要一步一步的分析,一步一步的實現。
面向物件是模型化的,你只需抽象出一個類,這是一個封閉的盒子,在這裡你擁有資料也擁有解決問題的方法。需要什麼功能直接使用就可以了,不必去一步一步的實現,至於這個功能是如何實現的,管我們什麼事?我們會用就可以了。
面向物件的底層其實還是面向過程,把面向過程抽象成類,然後封裝,方便我們使用的就是面向物件了。
4. static都有哪些用法?
所有的人都知道static關鍵字這兩個基本的用法:靜態變數和靜態方法.也就是被static所修飾的變數/方法都屬於類的靜態資源,類例項所共享.
除了靜態變數和靜態方法之外,static也用於靜態塊,多用於初始化操作:
public calss PreCache{
static{
//執行相關操作
}
}
此外static也多用於修飾內部類,此時稱之為靜態內部類.
最後一種用法就是靜態導包,即import static
.import static是在JDK 1.5之後引入的新特性,可以用來指定匯入某個類中的靜態資源,並且不需要使用類名,可以直接使用資源名,比如:
import static java.lang.Math.*;
public class Test{
public static void main(String[] args){
//System.out.println(Math.sin(20));傳統做法
System.out.println(sin(20));
}
}
5. 在檔案拷貝的時候,哪一種流可用於提升更多的效能?
- 在位元組流的時候,使用BufferedInputStream和BufferedOutputStream。
- 在字元流的時候,使用BufferedReader和BufferedWriter。