== equals hashcode作用和區(qū)別聯(lián)系

1咽笼、==

==為兩個對象地址的判斷

String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
System.out.println(str1 == str2);
System.out.println(str2 == str3);

str1 == str2 為true萤衰,他們都是存放在常量池中的數(shù)據(jù)像捶,指向同一地址,所有相同
str2 == str3 為false, str3指向new的對象地址扬跋,而str2位常量池中的地址阶捆,所以不同

2、equals

在Object中的默認實現(xiàn)就是==钦听,比較對象的地址洒试,子類可以重寫equals方法,實現(xiàn)對象的比較

String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
System.out.println(str1.equals(str2));
System.out.println(str2.equals(str3));

兩個輸出的結(jié)果都為true朴上,因為String類中重寫Object中的equals方法垒棋,增加了內(nèi)容的判斷

3、hashcode()

hashCode返回的是一個int的數(shù)值痪宰,其目的是實現(xiàn)一個hash碼叼架,hashCode方法的主要作用是為了配合基于散列的集合一起正常運行,(HashSet衣撬、HashMap以及HashTable)乖订,在基于散列的集合為了阻止數(shù)據(jù)的重復(fù)判斷集合是否已存在相關(guān)對象,一般沒有作用,在散列表中才有作用

== 和equals的對比

equals在Object中默認實現(xiàn)就是==具练,默認是通過對象的地址來判斷對象是否相等垢粮,對象一般會通過對equals的重寫來進行對象的判斷

class Person{
    private int age;
    public Person(int age){
       this.age = age;
    }
    public void setAge(int age){
       this.age = age;
    }
    public int getAge(){
       return age;
    }
}

public static void main(String[] args){
    Person p1 = new Person(16);
    Person p2 = new Person(16);
    System.out.println(p1 == p2);
    System.out.println(p1.equals(p2))
}

p1 == p1 返回false,判斷的是對象的地址靠粪,因為新建的是兩個對象蜡吧。
p1.equals(p2) 返回true,因為重寫了person中的equals方法占键,判斷的是里面的內(nèi)容

hashCode和equals的聯(lián)系

在一般的集合和操作中昔善,如果不是進行散列表的數(shù)據(jù)結(jié)構(gòu)操作,他們是沒有關(guān)系的
在普通對象的比較中畔乙,通過equals方法判斷返回true的時候君仆,他的hashcode不一定相等

在進行散列表的數(shù)據(jù)結(jié)構(gòu)操作是,有如下關(guān)系:

1牲距、如果對象中重寫了equals方法返咱,則有必要重寫hashCode方法
2、如果equals返回true牍鞠,則hashcode有必要也返回相等的hash值
3咖摹、如果equals返回false,則hashcode不一定返回不同的hash值难述,但為不相等的對象生成不同的hash值萤晴,可以提高哈希表的性能
3、如果hashCode值返回true胁后,則equals不一定要返回true
4店读、如果hashcode值返回false,則equals一定返回false
7攀芯、同一對象在執(zhí)行期間若已經(jīng)存儲在集合中屯断,則不能修改影響hashCode值的相關(guān)信息,否則會導(dǎo)致內(nèi)存泄露問題

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侣诺,一起剝皮案震驚了整個濱河市殖演,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌紧武,老刑警劉巖剃氧,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異阻星,居然都是意外死亡朋鞍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門妥箕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滥酥,“玉大人,你說我怎么就攤上這事畦幢】参牵” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵宇葱,是天一觀的道長瘦真。 經(jīng)常有香客問我刊头,道長,這世上最難降的妖魔是什么诸尽? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任原杂,我火速辦了婚禮,結(jié)果婚禮上您机,老公的妹妹穿的比我還像新娘穿肄。我一直安慰自己,他們只是感情好际看,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布咸产。 她就那樣靜靜地躺著,像睡著了一般仲闽。 火紅的嫁衣襯著肌膚如雪脑溢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天蔼囊,我揣著相機與錄音焚志,去河邊找鬼。 笑死畏鼓,一個胖子當著我的面吹牛酱酬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播云矫,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼膳沽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了让禀?” 一聲冷哼從身側(cè)響起挑社,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巡揍,沒想到半個月后痛阻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡腮敌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年阱当,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糜工。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡弊添,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捌木,到底是詐尸還是另有隱情油坝,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站澈圈,受9級特大地震影響彬檀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瞬女,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一凤覆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拆魏,春花似錦、人聲如沸慈俯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贴膘。三九已至卖子,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刑峡,已是汗流浹背洋闽。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留突梦,地道東北人诫舅。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像宫患,于是被迫代替她去往敵國和親刊懈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容