Java中的浅拷贝和深拷贝

当类中存在可变对象数据域的时候,浅拷贝会存在问题,因为origina和copy共同引用一个可变对象,当其中一方改变对象状态时,另一方所存储的也发生改变

这里的改变,是指对象变量所引用的对象不变,只是所引用的对象的状态发生改变,如果变量重新引用其他对象,则不会影响到另一方,下面的例子简单说明这种情况

1.所引用的对象的状态发生改变,如果是浅拷贝,调用该方法,存在问题

	public void setHireDay(int year, int month, int day)
	{
		GregorianCalendar calendar = new GregorianCalendar(year, month-1, day);
		Date newHiDay = calendar.getTime();
		hireDay.setTime(newHiDay.getTime());
	}


2.对象变量重新引用其他可变对象, 不会存在问题

	public void setHireDay(int year, int month, int day)
	{
		GregorianCalendar calendar = new GregorianCalendar(year, month-1, day);
		hireDay = calendar.getTime();
	}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>