java 常見問題

約翰發表於2020-12-29

1.介面和抽象類區別;
https://testerhome.com/topics/27323

2.string和stringbuffer的區別?
String 是隻讀字串,意味著字串內容無法被修改;
StringBuffer是可以直接進行修改的;
其中StringBuffer比StringBuilder的效率低,因為StringBuffer被synchronized修飾;

3.String是最基本的資料型別嗎?
不是,java最基本的資料型別一共8種,包含:int byte char float double boolean short long
String是引用型別
另外還有列舉型別enumeration type

4.int和Integer的區別?

5.解釋記憶體中的棧、堆和靜態區的用法?
棧空間很小,一般儲存的是:變數,一個物件的引用,以及函式呼叫現場
堆:儲存的是物件;堆的空間很大,理論上整個記憶體沒有被其他程式使用的空間甚至硬碟上的虛擬記憶體都可以被當作堆空間使用。
常量儲存在靜態區;

6.陣列有沒有length()方法?String有沒有length()方法?
陣列沒有length()方法,有length屬性;
String 有length()方法。

7.過載和重寫的區別?
過載是同一個類中同名函式,引數型別或是引數個數不同或是兩者都不同,返回值無要求;(編譯時多型)
重寫是子類繼承父類,需要對父類方法進行重寫,引數型別或是引數個數以及返回值要求是一樣的。(執行時多型)

8.建立執行緒的方法:
1)繼承Thread類;
2)implements Runnable介面;
3)通過執行緒池建立執行緒;
4)使用Callable和Future建立

9.克隆如何實現?
1)實現Cloneable介面並重寫Object類中的clone()方法;
2)實現Serializable介面,通過物件的序列化和反序列化實現克隆,可以實現真正的深度克隆;

10.靜態變數和例項變數的區別
靜態變數是被static修飾的,也叫類變數,它屬於一個類,不屬於任何一個物件,一個類無論建立多少個物件,靜態變數在記憶體中有且僅有一個拷貝;
例項變數必須依賴於一個例項,需要先建立物件然後通過物件才能訪問到它。
靜態變數可以實現讓多個物件共享記憶體;

11.介面是否可以繼承extends介面?抽象類是否可以實現implements介面?抽象類是否可以繼承具體類?
介面可以繼承介面,而且支援多重繼承;
抽象類可以實現介面;
抽象類可以繼承具體類也可以繼承抽象類;

12.java中final關鍵字有那些用法?
1)修飾類:表示該類不能被繼承;
2)修飾方法:表示該方法不能被重寫;
3)修飾變數:表示變數只能一次賦值,之後不允許修改,即定義常量;

13.

相關文章