1. 程式人生 > 其它 >自用java面試寶典(無水題)-歡迎指導糾錯-day06

自用java面試寶典(無水題)-歡迎指導糾錯-day06

技術標籤:java面試寶典(無水題)歡迎批評指正java

20. 你知道java中有多少個包裝類嗎?為什麼要引入包裝類?他們和基本資料型別的區別?

Java有十種包裝類,常用的有八種,分別對應八種基本型別,分別是:
Integer 、Long、Short、Byte、Character、Double、Float、Boolean
另外兩個應用於高精度的運算,沒有對應的基本型別,不常用。

引入包裝類的原因:

① java是純面向物件的語言,一切皆物件,但八大基本型別卻不是物件

② 包裝類在滿足基本型別功能的基礎上,能根據具體應用場景更加靈活的控制資料範圍
比如:一個學生類中有成績屬性,如果有一名學生缺考,要把他的成績屬性置為null,顯然基本型別是做不到的。

包裝類和基本型別的區別:

① 宣告方式不同,基本型別無需通過new關鍵字來建立,而封裝類需要

② 儲存方式及位置不同,基本型別是直接儲存變數的值儲存在棧中能高效的存取,封裝類需要通過引用指向例項,具體的例項儲存在堆中

③ 初始值不同,封裝型別的初始值為null,基本型別的初始值由具體型別而定

④ 使用場景不同,包裝類的功能可以覆蓋基本型別,但是一些情況下,基本型別不能代替包裝類。比如泛型在jvm中編譯時是沒有型別概念的,裡面的所有東西都被視為Object來進行一些處理,而基本型別不能完成類似的功能。

21. 說說你對JavaBean的理解以及它的編寫規範? (12.17)

JavaBeans是Java中一種特殊的類,可以將多個物件封裝到一個物件(bean)中。特點是可序列化,提供無參構造器,提供getter方法和setter方法訪問物件的屬性。名稱中的“Bean”是用於Java的可重用軟體元件的慣用叫法。

一個javaBean在編寫時應該按照下面的規範:
① 類是public的
② 所有屬性都是private
③ 提供預設的空參構造器
④ 提供setter()和getter()
⑤ 實現serializable介面

22. 簡單介紹java.lang.Object類中的六個常用方法

① equals()

public boolean equals(Object obj) {    
    return (this == obj);    
} 

比較物件的地址是否相同,如果子類重寫一般是比較物件內容是否相同。

② hashCode()

public native int hashCode(
);

③ clone()

protected native Object clone() throws CloneNotSupportedException; 

建立並返回此物件的副本。

④ toStrinfg()

public String toString() {  
    return getClass().getName() + "@" + Integer.toHexString(hashCode());  
}  

把資料轉變成字串返回

⑤ getClass()

public final native Class<?> getClass();

⑥ finalize()

protected void finalize() throws Throwable {} 

當垃圾回收確定不再有對物件的引用時,垃圾回收器在物件上呼叫。

23. equals和==的區別
首先它們都是用於比較是否想等的,不同的是:“==”是關係運算符,equals()是方法,同時它們的結果都是布林型。

① “==”使用情況如下:

a.基本資料型別,比較的是值

b.引用資料型別,比較的是地址

c.不能比較沒有父子關係的兩個物件

②equals()方法使用情況如下:

a.系統類一般已經覆蓋了equals(),比較的是內容,比如String

b.使用者自定義類如果沒有重寫equals()方法,將呼叫父類的equals(),比如是Object(),而Object的equals比較的是地址

c.使用者自定義類如果要想知道物件內容值是否想等,必須重寫equals()方法
注意:對於Object類,equals()和“==”效果一樣。

參考:
http://www.bjsxt.com/javamianshiti.html
https://blog.csdn.net/a1436445152/article/details/94010198
https://www.nowcoder.com/