freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java內(nèi)存堆和棧深入(文件)

 

【正文】 這兩個(gè)函數(shù)是不需要定義的。這種比較是默 認(rèn)的對(duì)象比較方式,在Object這個(gè)對(duì)象中,這種方式就已經(jīng)設(shè)計(jì)好了。后者不僅僅是個(gè)代號(hào)還具有在內(nèi)存中才查找對(duì) 象的位置的功能。這些收集對(duì)象究竟如何工作的,想象每個(gè)元對(duì)象hashCode是一個(gè)箱子的 編碼,按照編碼,每個(gè)元對(duì)象就是根據(jù)hashCode()提供的代號(hào)歸入相應(yīng)的箱子里。這個(gè)例子說(shuō)明一個(gè)元對(duì)象可以和其他不同的元對(duì)象擁有相同的hashCode。這是正確的面向?qū)ο笤O(shè)計(jì)方法,任何用戶一時(shí)用不到的功能,就先不要設(shè)計(jì),以免給日后功能擴(kuò)展帶來(lái)麻煩。equals()先要查null和是否是同一類型。如果對(duì)象中擁有無(wú)法serialized的數(shù)據(jù),equals()有可能在操作中出現(xiàn)錯(cuò)誤。這也是要注意的。 hashCode的作用  總的來(lái)說(shuō),Java中的集合(Collection)有兩類,一類是List,再有一類是 Set。也就是說(shuō),如果集合中現(xiàn)在已經(jīng)有1000個(gè)元素,那么第1001個(gè)元素加入集合時(shí),它就要調(diào)用1000次 equals方法。如果詳細(xì)講解哈希算法,那需要更多的文章篇幅,我在這里就不介紹了。這樣一來(lái)實(shí)際調(diào)用equals方法的次數(shù)就大大降低了,幾乎只需要一兩次。我們知道,equals()函數(shù)是用來(lái)做比較的。這里說(shuō)“通?!?,是因?yàn)樵谧罡镜腛bject類中,equal()函數(shù)做的是地址的比較。我們通常不會(huì)注意到這個(gè)問(wèn)題,因?yàn)槲覀兺ǔK褂玫膋ey都是簡(jiǎn)單類型,或者是String, Long等一些特殊的對(duì)象(其特殊性請(qǐng)參看筆者在寫java 淺拷貝和深拷貝時(shí)的討論),這時(shí)候,這個(gè)問(wèn)題被我們無(wú)意間繞過(guò)了有人已經(jīng)概括了這種我們忽略了的情況:“如果你想將一個(gè)對(duì)象A放入另一個(gè)收集(集合)對(duì)象B里,或者使用這個(gè)對(duì)象A為查找一個(gè)元對(duì)象在收集對(duì) 象B里位置的鑰匙(key),并支持是否容納(isContains()),刪除收集對(duì)象B里的元對(duì)象(remove()?)這樣的操作,那么,equals()和hashCode()函數(shù)必須開(kāi)發(fā)者自己定義。而在說(shuō)equals()的時(shí)候我們還涉及hashCode()是因?yàn)樵谟行?yīng)用中(比如,HashMap的key是對(duì)象),必須在重載equals()的同時(shí)重載hashCode()。而比較個(gè)體也有兩種:一種是簡(jiǎn)單類型(這類簡(jiǎn)單說(shuō)來(lái)無(wú)所謂內(nèi)存地址的比較或者內(nèi)容比較的區(qū)別);還有一種是對(duì)象的比較,本文中說(shuō)的主要是后者在java中,(對(duì)象)內(nèi)存地址的比較,是通過(guò)==完成的。你當(dāng)然可以不按要求去做了,但你會(huì)發(fā)現(xiàn),相同的對(duì)象可以出現(xiàn)在Set集合中。如果這個(gè)位置上沒(méi)有元素,它就可以直接存儲(chǔ)在這個(gè)位置上,不用再進(jìn)行任何比較了;如果這個(gè)位置上已經(jīng)有元素了,就調(diào)用它的equals方法與新元素進(jìn)行比較,相同的話就不存了,不相同就散列其它的地址。哈希(Hash)實(shí)際上是個(gè)人名,由于他提出一哈希算法的概念,所以就以他的名字命名了。那么這里就有一個(gè)比較嚴(yán)重的問(wèn)題了:要想保證元素不重復(fù),可兩個(gè)元素是否重復(fù)應(yīng)該依據(jù)什么來(lái)判斷呢?。2. 進(jìn)行更好的測(cè)試案例開(kāi)發(fā)。然而equals()和hashCode()都有依靠 這個(gè)整型數(shù)據(jù),那么,這個(gè)對(duì)象在serialization之前和之后,是否一樣?答案是不一樣。查 null是為了避免出現(xiàn)NullPointerException這樣的異常給丟出來(lái)。我還沒(méi)有遇到過(guò)哪一個(gè)開(kāi)發(fā)者和我說(shuō)設(shè)計(jì)這兩個(gè)函數(shù)要違背前面說(shuō)的兩個(gè)規(guī)則,我碰到這些違反規(guī)則的情況時(shí),都是作為設(shè)計(jì)錯(cuò)誤處理。所以這兩個(gè)規(guī)則必須成立。 * (y)返回“false”,那么x和y的hashCode()有可能相等,也有可能不等。 * (y)返回“true”,那么x和y的hashCode()必須相等。這種操作需要兩個(gè)重要的信息,一是對(duì)象的 hashCode(),還有一個(gè)是對(duì)象內(nèi)容對(duì)比的結(jié)果。這些對(duì)象是HashMap, Hashtable, HashSet,等等。 * 任何情況下,(null),永遠(yuǎn)返回是“false”;(和x不同類型的對(duì)象)永遠(yuǎn)返回是“false”。 * 還有一致性:(y)返回是“true”,只要x和y內(nèi)容一直不變,(y)多少次,返回都是“true”。 * 類推性:(y)返回是“true”,(z)返回是“true”,(x)也應(yīng)該返回是“true”。 * 反射性:(x)必須返回是“true”。 * 對(duì)稱性:(y)返回是“true”,(x)也應(yīng)該返回是“true”。對(duì)象內(nèi)容的比較才是設(shè)計(jì)equals()的真正目的,Java語(yǔ)言對(duì)equals()的要求如下,這些要求是必須遵循的。什么是對(duì)象參閱值的比較?就是兩個(gè)參閱變量的值得比較,我們 都知道參閱變量的值其實(shí)就是一個(gè)數(shù)字,這個(gè)數(shù)字可以看成是鑒別不同對(duì)象的代號(hào)。最常見(jiàn)的是當(dāng) 一個(gè)對(duì)象被加入收集對(duì)象(collection object)時(shí),這兩個(gè)函數(shù)必須自己設(shè)計(jì)。等等。 } hash = h。 for (int i = 0。 return true。 char v2[] = 。 int n = count。 } return true。因?yàn)?,你重寫了equals方法,你調(diào)用它來(lái)進(jìn)行對(duì)象間的比較,你可以達(dá)到你的比較目的,但是,當(dāng)你想將你的對(duì)象存入類似HashSet這類對(duì)象中時(shí),問(wèn)題就出現(xiàn)了(沒(méi)有重寫hashCode方法的情況下)。//Object中的equa
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1