一个关于java数组复制的奇怪问题(50分)

  • 主题发起人 主题发起人 income
  • 开始时间 开始时间
I

income

Unregistered / Unconfirmed
GUEST, unregistred user!
今天遇到一个java的奇怪问题,想了半天也不知道是为什么,希望高手给予指点
public class strange{
public static void main(String args[]){
int a[][] = {{1,2,3},{4,5,6}};
int b[][] = new int[2][3];
System.arraycopy(a,0,b,0,a.length);
b[0][0] = 4;
System.out.println(a[0][0]);
System.out.println(b[0][0]);
}
}
结果输出为4 4 我只是修改了数组b第一个元素的值,可数组a的第一个元素的值也变了。如果将以上程序中的数组改为一维的,则不存在此问题,请高手赐教。
 
这个就是java中传 值 ,还是传 指针的问题了.
因为java中二维数组,是数组的数组,是对象。
所以传递的是对象的指针。这个时候a和b里面的指针指的是相同一个地方的数据,所以改动一个,两个 就同时变化。
 
同意你的观点,但其实一维数组也是对象,为什么不采用传递对象的指针的方式?有特别的原因吗?
by the way:这里讨论java的人实在太少了,两天了,这个问题就一个人回答。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部