


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Java值傳遞以及引用的傳遞、數組的傳遞!!許多編程語言都有2種方法將參數傳遞給方法----按值傳遞和按引用傳遞。與其他語言不同,Java不允許程序員選擇按值傳遞還是按引用傳遞各個參數,基本tsa類型(byte--short--int--long--float--double--boolea的變量總)是按值傳遞。就對象而言,不是將對象本身傳遞給方法,而是將對象的的引用或者說對象的首地址傳遞給方法,引用本身是按值傳遞的是說,講引用的副本傳遞給方法(副本就是說明對象此時有兩個引用了),通過對象的引用,方法可以直接操作該對象(當操作該對象時才能改變該對象,而操作引用時源對象是沒有改變的)。tsa現在說說數組:如果將單個基本類型數組的元素傳遞給方法,并在方法中對其進行修改,則在被調用方法結束執行時,該元素中存儲的并不是修改后的值,因為這種元素是按值傳遞,如果傳遞的是數組的引用,則對數組元素的后續修改可以在原始數組中反映出來(因為數組本身就是個對象,int[]a=newint[這里面的^七是數組元素的類型,而數組元素的修改是操作對象)。對于單個非基本類型數組的元素在方法中修改,則在被調用方法結束執行時,該元素中存儲的是修改后的值,因為這種元素是按引用傳遞的,對象的改動將在源數組的數組元素中反映出來。卜面看個小程序:publicclassTest(2.3.Stringstr=newString(〃good〃);char[]ch=('a','b','c'};inti=10;publicvoidchange(Stringstr,char[]ch,inti)(7.3.str="testok”;ch[0]='g';i++;}12.publicstaticvoidmain(String[]args)(14.Testtt=newTest();tt.change(tt.str,tt.ch,tt.i);System.out.println(tt.i);System.out.print(tt.str+"and");System.out.println(tt.ch);}}str是String類型的引用,i是基本類型變量,ch是數組名,也是數組對象的引用在chang()方法里,str="testok",是一個新的對象把首地址放在引用變量str上;而ch[0]='g';因為傳的是數組的引用,而此時ch[0]='g';是對數組元素的操作,能修改源數組的內容;i是整型值,只是把值copy了一份給方法,在方法的變化是不改變的源i的。所以結果是:10goodandgbc現在咱們把代碼變化一下:publicclassTest(2.Stringstr=newString("good");char[]ch={'a','b','c'};inti=10;publicvoidchange(Stringstr,charch,inti)(7.str="testok";ch='g';this.i=i+1;}12.publicstaticvoidmain(String[]args)(14.Testtt=newTest();tt.change(tt.str,tt.ch[0],tt.i);System.out.println(tt.i);TOC\o"1-5"\h\zSystem.out.print(tt.str+"and");System.out.println(tt.ch);}}仔細觀察下實參以及入參有何變化?change()方法里的入參char[]ch變成charch;這次傳遞的是個char值的單個數組元素,按照上面的解析,此時ch='9'是不影響源數組元素的。this.i=i+1;這里面等號左邊的i是屬性i,等號右邊的i是局部變量(入參里的i);此時i+1后賦值給屬性的1,自然會改變屬性i的值,同時17行,tt.i又是調用屬性的i,這次的結果是:11goodandabc現在是不是有點明白了?那好再看下面一個小程序publicclassTest(2.publicvoidchange(StringBufferx,StringBuffery)(4.x.append(y);y=x;}publicstaticvoidmain(String[]args)(9.StringBufferbuffA=newStringBuffer("a");StringBufferbuffB=newStringBuffer("b");newTest().change(buffA,buffB);System.out.println(buffA+","+buffB);}}這次傳遞的是兩個對象的引用的值,在方法change()里的x.append(y),其中引用x調用api方法append()修改了newStringBuffer("a");的內容。y=x;是一個修改內容的對象把首地址賦值給引用變量y了,此時操作的是引用,而先前y是newStringBuffer("b");的引用變量,所以輸出結果是:ab,b下面是個稍難的小程序,先自己用筆畫畫過程,寫出自己的結果,而后再上機操作下,如果自己的結果和在電腦上的結果一樣,那么再碰到這類題就不難了,如果不一樣,回頭仔細體會下我前面的講解,找找原因。publicclassTest(2.privateStringnn=newString("1");privateString[]mm=("2","5"};5.voidtest(Stringnn,String[]mm)(7.nn=newString("3”);this.nn="9";10.mm[0]="4";System.out.println("intest(),mm[0]:"+mm[0]);mm=newString[]("8","7"};System.out.println("intest(),nn:"+nn);System.out.println("this.nn:"+this.nn);System.out.println
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025網絡版自建房買賣合同書
- 保姆三方合同樣本
- led燈珠合同樣本
- 個體商合伙合同樣本
- 企業電纜出售合同標準文本
- 業務員用工合同樣本
- 農村水管收購合同樣本
- 農民工法律援助合同樣本
- 冰糖代加工合同樣本
- 2025年蔬菜采購合同范本
- 中小學綜合實踐活動課程指導綱要:讓學生更好地了解活動的意義和價值
- NSA2000變頻器使用說明書
- 2025年浙江國企溫州快鹿集團有限公司招聘筆試參考題庫含答案解析
- 2025合伙事業利潤分成管理協議
- 【培優卷】同步分層練習:四年級下冊語文第26課《寶葫蘆的秘密》(含答案)
- 2025年全球及中國包裹接收和追蹤軟件行業頭部企業市場占有率及排名調研報告
- 小學校長學校管理講座
- 河道水毀清理維護施工合同
- DB32T 4355-2022 建筑施工附著式升降設施安全技術規程(修)
- 農村初級電工培訓
- 2025年國家糧食和物資儲備局垂直管理系統事業單位招聘(869人)歷年管理單位筆試遴選500模擬題附帶答案詳解
評論
0/150
提交評論