亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

老師講的內容好像錯了

額。。。。老師好像講錯了,老師說:“new出來的兩個對象hashcode一定不相同”,可是,new出兩個的String類型的相同字符串,它們的hashcode是相同的呀。。。。。。

正在回答

10 回答

你們聊到哪去了。。。 new出兩個的String類型的相同字符串,它們的hashcode是相同的原因是,String.class中重寫了hashcode方法啊。。。。

0 回復 有任何疑惑可以回復我~
#1

黑夜_K

哈哈。。
2017-10-14 回復 有任何疑惑可以回復我~

第二點呢...每個人的知識都有漏洞吧,我不知道“字符串本身就是hashcode”,java應用hash算法是為了方便檢索內存里的東西。這個暫且不說。你提的問題“兩個相同值得String類型對象得到的hashcode是一樣得”。這個呢,下面截圖有,第一張是jdk的官方文檔,雖然是漢化版的。我所說的一樣是指字符串對象(s1,s2)引用調用hashcode()方法返回的值是一樣的。而第一張截圖上說了,返回的是此對象的哈希碼值。自然就是String對象的哈希碼值,也即是堆中存儲的String對象的哈希碼值。不是你說的String值得哈希碼。夠清楚的吧...第三點,慎用網絡用語:“呵呵”,“逗逼”,對陌生人用,這就是罵人的話,而不是調侃。還有什么疑問歡迎提出...

574c800e0001313b05000202.jpg

574c800e000170cb05000382.jpg


1 回復 有任何疑惑可以回復我~

http://img1.sycdn.imooc.com//574c29110001133712900462.jpg再看看這個

0 回復 有任何疑惑可以回復我~
#1

沉寂的蝸牛 提問者

基本數據類型就只有八個,數值型:byte,short,int,long,浮點型:float,double,字符型:char,布爾型:boolean。所以呢?String不是基本數據類型,而是引用類型,只是代表一個類,不過因為常量池的存在經常會誤以為它是基本數據類型。這是第一點...
2016-05-31 回復 有任何疑惑可以回復我~
#2

沉寂的蝸牛 提問者

那個A類是這樣的。new String()相當于創建一個空字符串,API上說了,使用hashcode()得到的數據為0;第二條沒問題;第三條b這個引用變量指向的是null,輸出來的自然是null了;你這是什么編譯器?第四條的代碼對應了第五條的輸出了,“0”的hashcode是48.;第五條代碼,既然c這個引用變量都不指向堆內存空間了,也就是說根本沒有對象。而hashcode()返回的是對象的哈希碼...不是一個String對象還用String類的方法當然報空指針異常了。
2016-05-31 回復 有任何疑惑可以回復我~
#3

mjka5632 回復 沉寂的蝸牛 提問者

太牛了!看完之后,感覺你們好厲害!崇拜
2016-08-11 回復 有任何疑惑可以回復我~

如果是String類型的 ?要通過調用字節數組 ? ? 顯示 字符串的hashcode?

0 回復 有任何疑惑可以回復我~

http://img1.sycdn.imooc.com//574c1afe00016f8509140266.jpg大哥 ?我還是沒理解 ?你最后的那句話 ?“兩個相同值得String類型對象得到的hashcode是一樣得.” ?就話的hashcode ?指的是那種hashcode ?;你這就話有兩種hashcode ? ?第一種是對象指向的對象的值的地址的hashcode ? ;第二種是對象指的hashcode。 ?你以前說的hashcode是第一種 ?我也知道String是類 ?但String也是基本數據類型 ? 字符串本身就是hashcode ?

0 回復 有任何疑惑可以回復我~

可是,new出兩個的String類型的相同字符串,它們的hashcode是相同的呀。。。。。。 ? ?這只是你的理解而已 ?老師并沒有說這就話 ?如果老師說這句話 那它重寫hashcode() ?就行 ?干嘛重寫equals()判斷對象的值是否相同

寫個hashcode()判斷他們引用的地址就行了呀!對不對 ? ?別一天天的說 源代碼源代碼 你看了就真的以為你把源代碼理解了? ?還是好好想想老師為社么這樣寫

0 回復 有任何疑惑可以回復我~
#1

沉寂的蝸牛 提問者

哎...網上聊天就這不好,我不懂你的意思,你也不明白我的想法,特容易聊出情緒。平復一下...
2016-05-30 回復 有任何疑惑可以回復我~
#2

沉寂的蝸牛 提問者

這視頻去年看了,早忘了。好了,我不說老師講錯了?;氐阶畛醯膯栴},“new出兩個的String類型的相同字符串,它們的hashcode是相同的,為什么?”。“hashCode是jdk根據對象的地址或者字符串或者數字算出來的int類型的數值”這是百度百科里的解釋。老師說的“new出來的兩個對象hashcode一定不相同”這個可能是hash算法針對對象地址編寫的hashcode。因為new出來的兩個對象在堆內存中地址確實不一樣,只要不超過int表示范圍,可能就真的是一定不相同的。
2016-05-30 回復 有任何疑惑可以回復我~
#3

沉寂的蝸牛 提問者

但是呢...hash算法對String類型的對象和int類型的編寫hashcode是不同于地址編寫的。上次跟你說的源碼也正是hashcode()方法對Stirng類型對象的處理方式,它基本上是根據String類型的值去編寫的。所以,兩個相同值得String類型對象得到的hashcode是一樣得...說的還算清楚吧。
2016-05-30 回復 有任何疑惑可以回復我~
#4

沉寂的蝸牛 提問者

額...表達有漏字,你根據上下文腦補一下,應該不困難
2016-05-30 回復 有任何疑惑可以回復我~
#5

小小徐life 回復 沉寂的蝸牛 提問者

大哥 我還是沒理解 你最后的那句話 “兩個相同值得String類型對象得到的hashcode是一樣得.” 這句話的hashcode 指的是哪種hashcode ? 你這句話有兩種hashcode 第一種是對象指向的對象的值的地址的hashcode ;第二種是對象值的hashcode。 你以前說的hashcode是第一種 我也知道String是類 但String也是基本數據類型 字符串本身就是hashcode
2016-05-30 回復 有任何疑惑可以回復我~
查看4條回復

老師的意思是 對象的值的哈希碼相同 ?屬性的值 ?值 ?值呀 ?哥哥呀 字符串本來就是用哈希碼表示的的呀 ? ? 老師前面說的第一個哈希碼表示的是 對象的引用地址呀 ? 第二個哈希碼說的是對象引用地址里面對應的屬性(字符串)的哈希碼 ?你確定你真的了解引用傳遞么 ???臻g里面放的是對象 ?堆空間里面才是屬性 ???臻g里的哈希碼只是表示地址 ?而堆空間的哈希碼才是表示真正的值 ?就算你看再多的源代碼 理解能力差 ?又有什么用呢?

1 回復 有任何疑惑可以回復我~

還是自己來回答吧:查了下資料,new出來的兩個對象正常情況是不相同的,但如果超出了int類型的范圍,那么就至少有兩相同。那么問題來了,new兩個相同的字符串對象為什么他們的hashcode相同呢,這要看String類型的源碼了,源碼的意思基本上就是比較String對象的value值,值相同就相同?;剡^頭去,不是說new出來的兩個對象哈希值不相同嗎,額......感覺都是在扯淡,沒見官方文檔說new出來的兩個對象hashcode就一定相等啊。

0 回復 有任何疑惑可以回復我~

后面的一種,不信你可以試試。。。

0 回復 有任何疑惑可以回復我~
#1

小小徐life

你逗比呀大哥 new出來的是對象呀 它的哈希碼值代表??臻g指向堆空間的地址 又不是代表字符串 new都沒搞懂 你還是好好看看基礎吧
2016-05-26 回復 有任何疑惑可以回復我~
#2

沉寂的蝸牛 提問者 回復 小小徐life

哈希嗎值代表對象引用的地址。比如String s1=new String("abc");s1.hashcode()就表示這個地址。然后,哈希嗎值不是代表字符串。什么東西呀,誰說代表字符串了。new都沒搞懂,你還是好好看看基礎吧。額。。。我建議你先看清我提的問題,然后呢,再親自寫代碼試一下,最后呢,看一下字符串的hashcode()方法的源碼。。。最后的最后再提示一句:字符串也是對象。
2016-05-29 回復 有任何疑惑可以回復我~
#3

小小徐life 回復 沉寂的蝸牛 提問者

大哥 我想問你 你能new出兩個相同的對象嗎? 人家老師的意思 new出來的兩個對象hashcode一定不相同 說的是棧區對象指向堆區屬性的哈希碼值一定不相同 也就是你說的應用傳遞的地址所代表的哈希碼不同
2016-05-29 回復 有任何疑惑可以回復我~
#4

小小徐life 回復 沉寂的蝸牛 提問者

還有 老師什么時候說了這句話 可是,new出兩個的String類型的相同字符串,它們的hashcode是相同的呀。。。。。。
2016-05-29 回復 有任何疑惑可以回復我~
查看1條回復

String s="abc"這種還是String s=new String("abc")

0 回復 有任何疑惑可以回復我~
#1

沉寂的蝸牛 提問者

后面的一種,不信你可以試試。。。
2015-12-23 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

老師講的內容好像錯了

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號