日期:2014-05-20  浏览次数:20764 次

System.arraycopy()的一点疑问。
书上说“System.arraycopy()拷贝的是引用,而不是对象本身,对象本身不改变。”
================================================================
试了一下,
package p;
public class A {
public static void main(String[] args) {
  int a[]={1,2,3};
  int b[]={6,5,4,3,2,1};
  int c[]=b;
  System.arraycopy(a, 0, b, 0,a.length);
  for(int i:b)
   System.out.println(i);
  System.out.println("+++++++++");
  for(int j:c)
   System.out.println(j);
}
}
实际得到的结果是:
1
2
3
3
2
1
+++++++++
1
2
3
3
2
1
================================================
原本以为会得到
1
2
3
3
2
1
+++++++++
6
5
4
3
2
1
=======================================
这是为什么?
------解决方案--------------------
只有对象才有引用一说,int类型不是对象,也就不存在引用了
------解决方案--------------------
如果复制的是基本的数据类型,是复制值。
如果复制的是对象,就是复制引用。

如: Student []s = new Student[2];
Student []s1 = new Student[2];
s[0] = new Student();
s[0].name = "zhangsan";
s[0].sex = "nan";

s[1] = new Student();
s[1].name = "lisi";
s[1].sex = "nan";
System.arraycopy(s1,0,s,0,s.length);
这样才是引用,