Re: [蟲?] 靈異現象??=口=""

看板java作者時間19年前 (2006/02/27 16:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/8 (看更多)
嘿, 朋友是名別, 您在code裡加了別名 ※ 引述《freak2.bbs@ptt.cc (拉褲King)》之銘言: > 如果沒想錯的話 > 這應該是因為陣列為call by reference > 所以wired內容改變,normal也會變 > 相對的若是call by value的string就不同 > String wired="i hate you"; > String normal=wired; > 則wired變,normal也不會變 > 應該是這樣吧...大概 > ※ 引述《KeeperOf7Key (七把鑰匙的主人)》之銘言: > : 以下是一段短短的程式: > : public class MyGod > : { > : public static void main(String args[]) > : { > : int del = 1; > : String[] wired = {"I", "hate", "you"}; > : String[] normal = wired; wired也被稱為normal normal是wired的綽號(這樣也許比較容易了吧!?) 因此, 你對wired做什麼, 就是您對normal做了什麼, 反之, 亦然 > : MyGod myg = new MyGod(); > : String[] strange = myg.delete(wired,normal,del); > : for(int damn = 0; damn<normal.length;damn++) > : System.out.println("&" + normal[damn]); > : } > : String[] delete(String[] wired, String[] normal, int del) > : { > : wired[del] = ""; > : return wired; > : } > : } > : 上面的程式照理來說除了紅色那行將wired存到normal裡之外~沒有任何有關 > : normal的運算式,所以照理說在main裡面print出normal這個變數的時候, > : 應該是會印出毫無變動的&I,&hate,&you。受到變動的應該只有wired這個陣列 > : 裡的"hate"在delete這個method裡變成"",而跟normal無關。但是為什麼到最後 > : 在main裡面print出normal的時候連normal[1]也變成了""????想都想不透... > : 煩請各位高手幫忙,謝謝!!! > : ◆ From: 140.123.46.150 -- ※ Origin: SayYA 資訊站 <bbs.sayya.org> ◆ From: 163.26.34.214
文章代碼(AID): #140h7200 (java)
文章代碼(AID): #140h7200 (java)