看板java
標 題Re: [蟲?] 靈異現象??=口=""
發信站SayYA 資訊站 (Mon Feb 27 15:40:19 2006)
轉信站ptt!ctu-reader!news.nctu!SayYa
嘿, 朋友是名別, 您在code裡加了別名
※ 引述《[email protected] (拉褲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