130150ya-1214

130150ya-1214

ID:20933856

大?。?7.00 KB

頁數(shù):3頁

時間:2018-10-18

130150ya-1214_第1頁
130150ya-1214_第2頁
130150ya-1214_第3頁
資源描述:

《130150ya-1214》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、Java對象及引用  Java對象及引用是容易混淆卻又必須掌握的基礎(chǔ)知識,本章闡述Java對象和引用的概念,以及與其密切相關(guān)的參數(shù)傳遞?! ∠瓤聪旅娴某绦颍篠tringBuffers;s=newStringBuffer(“HelloWorld!”);  第一個語句僅為引用(reference)分配了空間,而第二個語句則通過調(diào)用類(StringBuffer)的構(gòu)造函數(shù)StringBuffer(Stringstr)為類生成了一個實(shí)例(或稱為對象)。這兩個操作被完成后,對象的內(nèi)容則可通過s進(jìn)行訪問——在Java里都是通過引用來操縱對象的?! ava對象和

2、引用的關(guān)系可以說是互相關(guān)聯(lián),卻又彼此獨(dú)立。彼此獨(dú)立主要表現(xiàn)在:引用是可以改變的,它可以指向別的對象,譬如上面的s,你可以給它另外的對象,如:s=newStringBuffer(“Java”);  這樣一來,s就和它指向的第一個對象脫離關(guān)系?! 拇鎯臻g上來說,對象和引用也是獨(dú)立的,它們存儲在不同的地方,對象一般存儲在堆中,而引用存儲在速度更快的堆棧中?! ∫每梢灾赶虿煌膶ο螅瑢ο笠部梢员欢鄠€引用操縱,如:StringBuffers1=s;  這條語句使得s1和s指向同一個對象。既然兩個引用指向同一個對象,那么不管使用哪個引用操縱對象,對象的內(nèi)容

3、都發(fā)生改變,并且只有一份,通過s1和s得到的內(nèi)容自然也一樣,如下面的程序:StringBuffers;s=newStringBuffer(“Java”);StringBuffers1=s;s1.append(“World”);System.out.println(“s1=”+s1.toString());//打印結(jié)果為:s1=JavaWorldSystem.out.println(“s=”+s.toString());//打印結(jié)果為:s=JavaWorld  上面的程序表明,s1和s打印出來的內(nèi)容是一樣的,這樣的結(jié)果看起來讓人非常疑惑,但是仔細(xì)想想,

4、s1和s只是兩個引用,它們只是操縱桿而已,它們指向同一個對象,操縱的也是同一個對象,通過它們得到的是同一個對象的內(nèi)容。這就像汽車的剎車和油門,它們操縱的都是車速,假如汽車開始的速度是80,然后你踩了一次油門,汽車加速了,假如車速升到了120,然后你踩一下剎車,此時車速是從120開始下降的,假如下降到60,再踩一次油門,車速則從60開始上升,而不是從第一次踩油門后的120開始。也就是說車速同時受油門和剎車影響,它們的影響是累積起來的,而不是各自獨(dú)立(除非剎車和油門不在一輛車上)。所以,在上面的程序中,不管使用s1還是s操縱對象,它們對對象的影響也是累積

5、起來的(更多的引用同理)?! ≈挥欣斫饬藢ο蠛鸵玫年P(guān)系,才能理解參數(shù)傳遞?! ∫话忝嬖囶}中都會考Java傳參的問題,并且它的標(biāo)準(zhǔn)答案是Java只有一種參數(shù)傳遞方式:那就是按值傳遞,即Java中傳遞任何東西都是傳值。如果傳入方法的是基本類型的東西,你就得到此基本類型的一份拷貝。如果是傳遞引用,就得到引用的拷貝?! ∫话銇碚f,對于基本類型的傳遞,我們很容易理解,而對于對象,總讓人感覺是按引用傳遞,看下面的程序:publicclassObjectRef{//基本類型的參數(shù)傳遞publicstaticvoidtestBasicType(intm){Syst

6、em.out.println(“m=”+m);//m=50m=100;System.out.println(“m=”+m);//m=100}//參數(shù)為對象,不改變引用的值publicstaticvoidadd(StringBuffers){s.append(“_add”);}//參數(shù)為對象,改變引用的值publicstaticvoidchangeRef(StringBuffers){s=newStringBuffer(“Java”);}publicstaticvoidmain(String[]args){inti=50;testBasicType(i

7、);System.out.println(i);//i=50StringBuffersMain=newStringBuffer(“init”);System.out.println(“sMain=”+sMain.toString());//sMain=initadd(sMain);System.out.println(“sMain=”+sMain.toString());//sMain=init_addchangeRef(sMain);System.out.println(“sMain=”+sMain.toString());//sMain=init

8、_add}}

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。
相關(guān)文章
更多
相關(guān)標(biāo)簽