java中数组复制注意事项

public class Demo {
	public static void main(String[] args) {
		//能实现理想效果
		int[] a = new int[]{1,2,3,4};
		int[] b = new int[4];
		System.arraycopy(a, 0, b, 0, a.length);
		b[0] = 0;
		System.out.println(a[0]);//1
		
		String[] aStr = new String[]{"a","b","c","b","e"};
		String[] bStr = new String[5];
		System.arraycopy(aStr, 0, bStr, 0, aStr.length);
		bStr[0]="hello";
		System.out.println(aStr[0]);//a		
		
		//不能达到想要的效果
		A[] aClass = new A[]{new A(1),new A(2),new A(3),new A(4),new A(5)};
		A[] bClass = new A[5];
		//复制过去的是new A(int num)引用
		System.arraycopy(aClass, 0, bClass, 0, a.length);
		bClass[0].setNum(10);
		System.out.println(aClass[0].getNum());	//10
	}
}


public class A {
	private int num;
	
	public A(int num){
		this.num = num;
	}
	
	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}
}



如果数组中存放的是对象的引用

那么使用java中的数组复制方法,可能达不到想要得效果


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值