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);
这样才是引用,