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

看板java作者 (拉褲King)時間19年前 (2006/02/27 14:58), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/8 (看更多)
如果沒想錯的話 這應該是因為陣列為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; : 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]也變成了""????想都想不透... : 煩請各位高手幫忙,謝謝!!! : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 140.123.46.150 : ※ 編輯: KeeperOf7Key 來自: 140.123.46.150 (02/27 14:50) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.1.148
文章代碼(AID): #140gC9XR (java)
討論串 (同標題文章)
文章代碼(AID): #140gC9XR (java)