作者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