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

正文內(nèi)容

java內(nèi)存堆和棧深入-預(yù)覽頁

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

下一頁面
 

【正文】 tr1==str2)。(str1==str2)。而對于String str = new String(abc);的代碼,則一概在堆中創(chuàng)建新對象,而不管其字符串值是否相等,是否有必要創(chuàng)建新對象,從而加重了程序的負(fù)擔(dān)。由于String類的immutable性質(zhì),當(dāng)String變量需要經(jīng)常變換其值時,應(yīng)該考慮使用StringBuffer類,以提高程序效率。事實(shí)上,面向?qū)ο蟮亩鄳B(tài)性,堆內(nèi)存分配是必不可少的,++中,要求創(chuàng)建一個對象時,只需用 new命令編制相關(guān)的代碼即可。我們知道,當(dāng)前方法使用的幀稱為當(dāng)前幀。應(yīng)用程序在運(yùn)行中所創(chuàng)建的所有類實(shí)例或數(shù)組都放在這個堆中,++不同,Java中分配堆內(nèi)存是自動初始化的。創(chuàng)建步驟是先看常量池中有沒有與JAVA相同的的字符串對象,如果有,將s1指向該對象,若沒有,則創(chuàng)建一個新對象,并讓s1指向它。1. 棧(stack)與堆(heap)都是Java用來在Ram中存放數(shù)據(jù)的地方。 2. 棧的優(yōu)勢是,存取速度比堆要快,僅次于直接位于CPU中的寄存器。但缺點(diǎn)是,由于要在運(yùn)行時動態(tài)分配內(nèi)存,存取速度較慢。 另一種是包裝類數(shù)據(jù),如Integer, String, Double等將相應(yīng)的基本數(shù)據(jù)類型包裝起來的類。的形式來創(chuàng)建,也可以用String str = abc;的形式來創(chuàng)建。使用String str = abc;的方式,可以在一定程度上提高程序的運(yùn)行速度,因?yàn)镴VM會自動根據(jù)棧中數(shù)據(jù)的實(shí)際情況來決定是否有必要創(chuàng)建新對象。 用+創(chuàng)建應(yīng)該是在堆里。 (i==j)。 (i==j)。 他們之間的比較,應(yīng)用雙等號(==),比較的是他們的值。 對于復(fù)合數(shù)據(jù)類型之間進(jìn)行equals比較,在沒有覆寫equals方法的情況下,他們之間的比較還是基于他們在內(nèi)存中的存放位置的地址值的,因?yàn)镺bject的equals方法也是用雙等號(==)進(jìn)行比較的,所以比較后的結(jié)果跟雙等號(==)的結(jié)果相同。 public boolean equals(Object obj) {}當(dāng)然,你也可以重寫Object的equals方法,這兒就有個問題啦,參加公司筆試的時候相信N多人都被要求回答過這樣的問題:在重寫了對象的equals方法后,還需要重寫hashCode方法嗎?為什么?我認(rèn)為,出于程序完整性的考慮,在重寫了對象的equals方法后,是有必要重寫對象的hashCode方法的。下面是String類重寫了的equals方法和hashCode方法://此方法的目的是,實(shí)現(xiàn)在不同的String對象之間比較,比較的是他們的字符串值public boolean equals(Object anObject) { if (anObject instanceof String) { if (n == ) { int i = offset。 return false。 } //返回的值是基于字符串的值運(yùn)算出來的, int off = offset。 //字符串的值,用字符數(shù)組表示 return h。 }問:對象的hashcode是用來干什么的?簡答:容器類經(jīng)常用到hascode,比如說set判斷重復(fù)值,比如說hashmap散列。但是在一些情況下,這兩個函數(shù)最好是自己設(shè)計(jì),才能確保整個程序的正常運(yùn)行。equals():它是用于進(jìn)行兩個對象的比較的,是對象內(nèi)容的比較,當(dāng)然也能用于進(jìn)行對象參閱值的比較。所以你也不用自己來重寫,浪費(fèi)不必要的時間。hashCode()所返回的值是用來分類對象在一些特定的收集對象中的位置。所有的箱子加起來就是一個HashSet,HashMap,或 H ashtable對象,我們需要尋找一個元對象時,先看它的代碼,就是hashCode()返回的整型值,這樣我們找到它所在的箱子,然后在箱子里,每 個元對象都拿出來一個個和我們要找的對象進(jìn)行對比,如果兩個對象的內(nèi)容相等,我們的搜尋也就結(jié)束。但是一個 元對象只能和擁有同樣內(nèi)容的元對象相等。如果你在設(shè)計(jì)時想別出心裁,不遵守以上的兩套規(guī)則,那么勸你還是不要做這樣想入非非的事。查同一類型是為了避免出現(xiàn)ClassCastException這樣的異常給丟出來。想象 一個對象x,它的一個整型數(shù)據(jù)是transient型(不能被serialize成二進(jìn)制數(shù)據(jù)流)。知道以上這些能夠幫助你:1. 進(jìn)行更好的設(shè)計(jì)和開發(fā)。你知道它們的區(qū)別嗎?前者集合內(nèi)的元素是有序的,元素可以重復(fù);后者元素?zé)o序,但元素不可重復(fù)。這顯然會大大降低效率。 于是,Java采用了哈希表的原理。初學(xué)者可以這樣理解,hashCode方法實(shí)際上返回的就是對象存儲的物理地址(實(shí)際可能并不是)。 這樣一來,當(dāng)集合要添加新的元素時,先調(diào)用這個元素的hashCode方法,就一下子能定位到它應(yīng)該放置的物理位置上。所以,Java對于eqauls方法和hashCode方法是這樣規(guī)定的:如果兩個對象相同,那么它們的hashCode值一定要相同;如果兩個對象的hashCode相同,它們并不一定相同,上面說的對象相同指的是用eqauls方法比較。java中的比較有兩種:一種是內(nèi)存地址的比較,一種是內(nèi)容的比較。而在其他幾乎所有的類中,equals()都經(jīng)過重載,進(jìn)行內(nèi)容的比較?!?(括號為筆者添加)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1