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

正文內(nèi)容

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

2024-09-08 16:23 上一頁面

下一頁面
 

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