【004期】JavaSE面試題(四):JavaSE語法(3)

開篇導讀

你們好,我是Java面試題庫提褲姐,今天這篇是JavaSE系列的第四篇,主要總結了JavaSE語法中會出現的相關面試題,在後續,會沿着第一篇開篇的知識線路一直總結下去,作到日更!若是我能作到百日百更,但願你也能夠跟着百日百刷,一百天養成一個好習慣。面試

1、重載(overload)和重寫(override)的區別?

方法的重載和重寫都是實現多態的方式,區別在於前者實現的是編譯時的多態性,然後者實現的是運行時的多態性。ide

重載發生在一個類中,同名的方法若是有不一樣的參數列表(參數類型不一樣、參數個數不一樣或者兩者都不一樣)則視爲重載;
重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回類型,比父類被重寫方法更好訪問,不能比父類被重寫方法聲明更多的異常(里氏代換原則)。
重載對返回類型沒有特殊的要求。code

方法重載的規則:對象

  • 方法名一致,參數列表中參數的順序,類型,個數不一樣。
  • 重載與方法的返回值無關,存在於父類和子類,同類中。
  • 能夠拋出不一樣的異常,能夠有不一樣修飾符。

方法重寫的規則:內存

  • 參數列表必須徹底與被重寫方法的一致,返回類型必須徹底與被重寫方法的返回類型一致。
  • 構造方法不能被重寫,聲明爲 final 的方法不能被重寫,聲明爲 static 的方法不能被重寫,可是可以被再次聲明。
  • 訪問權限不能比父類中被重寫的方法的訪問權限更低。
  • 重寫的方法可以拋出任何非強制異常(UncheckedException,也叫非運行時異常),不管被重寫的方法是否拋出異常。可是,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更普遍的強制性異常,反之則能夠。

2、構造方法能不能重寫?能不能重載?構造方法能不能顯式調用?

能夠重寫,也能夠重載
不能顯式調用,不能把構造方法當成普通方法調用,只有在建立對象的時候纔會被系統調用io

3、闡述靜態變量和實例變量的區別?

靜態變量:
是被 static 修飾符修飾的變量,也稱爲類變量,它屬於類,不屬於類的任何一個對象,一個類無論建立多少個對象,靜態變量在內存中有且僅有一個拷貝;
實例變量:
必須依存於某一實例,須要先建立對象而後經過對象才能訪問到它。靜態變量能夠實現讓多個對象共享內存。編譯

4、什麼是隱式轉換?什麼是顯式轉換?

顯式轉換就是強制類型轉換,把一個大類型的數據強制賦值給小類型的數據;
隱式轉換就是自動類型轉換,大範圍的變量可以接受小範圍的數據;變量

5、什麼是拆裝箱?

拆箱:把包裝類型轉化爲基本數據類型
裝箱:把基本數據類型轉化爲包裝類型循環

6、break 和 continue 的區別?

break 和 continue 都是用來控制循環的語句。
break 用於徹底結束一個循環,跳出循環體執行循環後面的語句。
continue 用於跳過本次循環,執行下次循環。權限

7、內部類與靜態內部類的區別?

內部類:
一、內部類中的變量和方法不能聲明爲靜態的。
二、內部類實例化:B是A的內部類,實例化B:A.B b = new A().new B()
三、內部類能夠引用外部類的靜態或者非靜態屬性及方法。

靜態內部類:
一、靜態內部類屬性和方法能夠聲明爲靜態的或者非靜態的。
二、實例化靜態內部類:B是A的靜態內部類,A.B b = new A.B()
三、靜態內部類只能引用外部類的靜態的屬性及方法。

兩者比較:

  • 靜態內部類相對於外部類是獨立存在的,在靜態內部類中沒法直接訪問外部類中的變量、方法。若是要訪問,必須new一個外部類的對象,使用new出來的對象訪問。可是能夠直接訪問靜態的變量,調用靜態的方法。
  • 普通內部類做爲外部類的一個成員存在,在普通內部類中能夠直接訪問外部類的屬性,調用外部類的方法。
  • 外部類要訪問內部類的屬性或者方法,須要建立一個內部類的對象,使用該對象去訪問屬性或者調用方法。
  • 其餘類要訪問普通內部類的屬性或者方法,必須在外部類中建立一個普通內部類的對象做爲屬性,外部類能夠經過該屬性調用普通內部類的方法或者訪問普通內部類的屬性。
  • 其餘類要訪問靜態內部類的屬性或者方法,直接建立一個靜態內部類對象便可。
相關文章
相關標籤/搜索