java常見的面試題
第一章 Java基礎知識
1、如何在main()方法之前輸出“hello world”?
答:在java語言中,由於靜態程式碼塊在類載入時就會被呼叫,故可以利用靜態程式碼塊實現該功能。
//在main()方法之前輸出Hello world ,靜態程式碼不論順序在哪裡都在main()方法執行之前執行,故以下兩種方法的結果時一樣的; public class Test01 { //靜態程式碼塊在main()方法之前 static { System.out.println("hello world1"); } public static void main(String[] args) { System.out.println("hello world2"); } } public class Test02 { //靜態程式碼塊在main()方法後 public static void main(String[] args) { System.out.println("hello world2"); } static { System.out.println("hello world1"); } }
2、Java中的作用域:
作用域和可見性 | 當前類 | 同一個包 | 子類 | 其他包 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
private | √ | |||
default | √ |
3、一個Java檔案是否可以定義多個類?
答:一個java檔案可以定義多個類,但是隻有一個類被public修飾,而且這個類與檔名相同,若這個檔案中沒有public類,則檔名時隨便一個類的名字即可。
4、什麼是建構函式?
答:建構函式是一類特殊的函式,用來在物件例項化時初始物件的成員變數。
特點:1、建構函式的名字與類名相同,且沒有返回值。
2、每個類可以有多個建構函式,若開發人員沒有提供建構函式,系統則會預設建立一個,如是開發人員提供了,系統就不會預設建立一個,如是系統預設建立的建構函式是無參的,且不會執行任何程式碼。
3、建構函式的主要作用是完成物件的初始化,且引數可以是0個,1個或者多個。
4、建構函式時在物件例項化的時候就自動呼叫了,且執行一次。
5、淺複製和深複製有什麼作用?
答:淺複製::對基本資料型別進行值傳遞,對引用資料型別進行引用傳遞般的拷貝,此為淺複製。
深複製:對基本資料型別進行值傳遞,對引用資料型別,建立一個新的物件,並複製其內容,此為深複製。
6、面向物件的特徵(抽象、封裝、繼承、多型)
答:1、封裝:將客觀事物抽象成類,每個類對自身的資料和方法實行保護。類可以把自己的資料和方法只讓可信的類或物件操作,對 不可信的進行資訊隱藏。
2、繼承:繼承是一種層次模型,新類(子類)會繼承基類(父類)的方法和變數,並且子類還可以修改或增加新的方法,更容易滿足特殊的需求。
3、多型:是指允許不同類的物件,對同一個訊息做出相應,可以解決應用程式函式同名的問題。