赋值操作后,对象的引用发生变化
2011-07-19 18:15
288 查看
// 此用例来源于Thinking in java class Tank{ int level; String msg; Tmp tmp; @Override public String toString() { return "level = "+level+" msg="+msg+" tmp="+tmp; }}class Tmp{ private String name; public Tmp(String name){ this.name=name; } @Override public String toString() { return this.name; }}
-----------------
Tank t1 = new Tank(); t1.level =1; t1.msg="message 1"; t1.tmp = new Tmp("tmp 1"); System.out.println(t1); Tank t2 = new Tank(); t2.level =2; t2.msg="message 2"; t2.tmp = new Tmp("tmp 2"); System.out.println(t2); t1 = t2 ;
t2赋值给t1后,t2中原对象的引用也指向了t1对象的引用,原先t2对象的引用被覆盖,信息丢失。
此时t2与t1指向同一个引用。
-----------------
Tank t1 = new Tank(); t1.level =1; t1.msg="message 1"; t1.tmp = new Tmp("tmp 1"); System.out.println(t1); Tank t2 = new Tank(); t2.level =2; t2.msg="message 2"; t2.tmp = new Tmp("tmp 2"); System.out.println(t2); t1 = t2 ;
t2赋值给t1后,t2中原对象的引用也指向了t1对象的引用,原先t2对象的引用被覆盖,信息丢失。
此时t2与t1指向同一个引用。
相关文章推荐
- const & 与赋值操作导致出现引用了匿名常量对象
- vector所存储对象地址在vector操作过程中发生变化
- [ JS 进阶 ] 基本类型 引用类型 简单赋值 对象引用 (转)
- java设计模式--基础思想总结--父类引用操作对象
- 此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- JAVA 对象引用,以及对象赋值
- WCF实体对象客户端引用时生成多余参数"××Specified",且值类型数据赋值无法传递值时必须付××Specified=true
- [JAVA] List,对象引用,复制list和赋值
- C++指针、引用传参操作对象----测试
- 一个例子说明java数据类型包括对象是赋值还是引用!!!
- python赋值和拷贝----一切皆对象,参数皆引用
- c++对象成员的引用,对象的赋值,对象指针或对象引用
- Python中对象的理解:引用和赋值
- C++指针、引用传参操作对象----测试
- python数字类型介绍以及创建数字值对象引用、删除数字值引用操作实例
- JavaScript对象引用与赋值实例详解
- 建议53:必要时应将不再使用的对象引用赋值为null
- JAVA 对象引用,以及对象赋值
- java基础学习总结——监听当数据发生变化时要做的操作
- 对对象的操作一定要以引用的方式传递