对象之间的赋值

 

赋值使用等号操作符“=”。它的意思是“取得右边的值(通常称为右值),把它复制给左边(通 常称为左值)”。右值可以是任何常数、变量或者表达式(只要它能生成一个值就行)。但左值 必须是一个明确的、已命名的变量。也就是说,它必须是一个物理空间以存储等号右边的值。

 

对基本数据类型的赋值是很简单的。基本类型存储了实际的数值,而并非指向一个对象的引用, 所以在其赋值的时候,是直接将一个地方的内容复制到了另一个地方。例如,对基本数据类型使 用“a=b”,那么b 的内容就复制给a,若接着又修改了a,那么b 根本不会受这种修改的影响。

 

为“对象”赋值的时候,情况却不是这样了。对一个对象进行操作时,我们真正操作的是对对象 的引用。所以倘若“将一个对象赋值给另一个对象”,实际是将“引用”从一个地方复制到另一 个地方。这意味着假若对对象使用“c = d”,那么cd都指向原本只有d指向的那个对象

 

 

class Tank{
	int level;
}

public class Assignment {
	public static void main(String args[]){
		Tank t1 = new Tank();
		Tank t2 = new Tank();
		t1.level=19;
		t2.level=40;
		System.out.println("t1.level:"+t1.level+"; t2.level:"+t2.level);
		t1=t2;
		System.out.println("t1.level:"+t1.level+"; t2.level:"+t2.level);
		t1.level=27;
		System.out.println("t1.level:"+t1.level+"; t2.level:"+t2.level);
	}
}///:~output
t1.level:19; t2.level:40
t1.level:40; t2.level:40
t1.level:27; t2.level:27

 由于“t1 = t2”操作的是一个对象的引用,这种现象通常称作“别名现象”,是java操作对象的一 种基本方式。在这个例子中如果想避免别名现象,可以这样写:

                                                  t1.level = t2.level

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值