JavaSE(六)——Object类、克隆方法
文章目錄
- 1. Object類
- 1.1 定義
- 1.2 常用方法
- 2. 克隆方法
- 2.1 定義
- 2.2 對(duì)象淺克隆要注意的細(xì)節(jié)
1. Object類
1.1 定義
Object類是頂層父類,所有的類都直接或間接繼承該類。
1.2 常用方法
(1)hashCode(): 返回此對(duì)象的哈希碼值,不是對(duì)象的實(shí)際地址值,可理解為邏輯地址值。不同對(duì)象的哈希碼值不同,同一對(duì)象的哈希碼值相同 。
(2)getClass():返回此對(duì)象的運(yùn)行時(shí)類。將JVM為這個(gè)文件創(chuàng)建的對(duì)象獲取出來。
(3)toString(): 返回此對(duì)象的字符串表示。一般建議在Objiect類的子類中重寫該方法。
(4)equals(Object object):判斷此對(duì)象是否與obj對(duì)象“相等”。
注意:“==”與equals()區(qū)別
-
“==”號(hào)在比較基本數(shù)據(jù)類型(int、float…)時(shí),比較的是兩個(gè)對(duì)象的字面值;在比較引用型數(shù)據(jù)類型(string…)時(shí)比較的是兩對(duì)象的地址值。
-
equals():在所有沒有重寫equals()方法的類中,調(diào)用equals()方法和使用==號(hào)的效果一樣,也是比較的地址值,然而,Java提供的所有類中,絕大多數(shù)類都重寫了equals()方法,重寫后的equals()方法一般都是比較兩個(gè)對(duì)象的字面值。
-
實(shí)例
-
運(yùn)行結(jié)果
2. 克隆方法
2.1 定義
-
clone()的權(quán)限修飾符是受保護(hù)的,在用的時(shí)候,讓該類重寫該方法,并把該方法的權(quán)限修飾符改為public。使用clone()方法采用的是淺克隆的方式。
-
實(shí)例
-
運(yùn)行結(jié)果
-
2.2 對(duì)象淺克隆要注意的細(xì)節(jié)
(1)如果一個(gè)對(duì)象需要調(diào)用clone的方法克隆,那么該對(duì)象所屬的類必須要實(shí)現(xiàn)Cloneable接口。
(2)Cloneable接口只不過是一個(gè)標(biāo)識(shí)接口而已,沒有任何方法。只是給該類打一個(gè)標(biāo)記,告訴JVM我要完成某種操作。
(3)對(duì)象的淺克隆就是克隆一個(gè)對(duì)象的時(shí)候,如果被克隆的對(duì)象中維護(hù)了另外一個(gè)類的對(duì)象,這時(shí)候只是克隆另外一個(gè)對(duì)象的地址,而沒有把另外一個(gè)對(duì)象也克隆一份。
(4)對(duì)象的淺克隆也不會(huì)調(diào)用到構(gòu)造方法。
-
實(shí)例
-
運(yùn)行結(jié)果
因?yàn)樵贒og類里維護(hù)了DogFood類的dogfood對(duì)象,所以只是克隆了dogfood的地址,使得運(yùn)行結(jié)果均為”泡面搭檔火腿腸“。
總結(jié)
以上是生活随笔為你收集整理的JavaSE(六)——Object类、克隆方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaSE(五)——修饰符、内部类、匿
- 下一篇: JavaSE(七)——Scanner类、