1. 程式人生 > 其它 >最新精選Java面試題及答案,Java基礎面試題答案精選(九)

最新精選Java面試題及答案,Java基礎面試題答案精選(九)


上圖是我整理的Java面試題合集,包攬了基本所有技術棧:完整版Java面試題合集附答案,高清PDF下載

1. Java多型的理解

  1. 多型是繼封裝、繼承之後,面向物件的第三大特性。
  2. 多型現實意義理解:
  • 現實事物經常會體現出多種形態,如學生,學生是人的一種,則一個具體的同學張三既是學生也是人,即出現兩種形態。
  • Java作為面向物件的語言,同樣可以描述一個事物的多種形態。如Student類繼承了Person類,一個Student的物件便既是Student,又是Person。
  1. 多型體現為父類引用變數可以指向子類物件。
  2. 前提條件:必須有子父類關係。

注意:在使用多型後的父類引用變數呼叫方法時,會呼叫子類重寫後的方法。

  1. 多型的定義與使用格式

定義格式:父類型別 變數名=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。