作者freak2 (拉褲King)
看板java
標題Re: [蟲?] 靈異現象??=口=""
時間Mon Feb 27 15:00:19 2006
如果沒想錯的話
這應該是因為陣列為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