java中的地址引用
2011-05-12 17:52
127 查看
java中的对象是地址引用,如:HashMap,通过key取得object,修改了oject的属性后,不用重新替换掉原hashMap中的对象,它会自动更新。这种方法很好用,但有时也要仔细使用。如果只想取一个备份的object处理,那则需要重新new一个对象,然后进行值拷贝(将value一个个复制过去s)。
一个例子:
类:PoP
测试类:TestPoP
输出结果:
修改前:pop1,is_show:0
修改后,pop1,is_show:1
地址引用,pop3,is_show:1
重新new了一个,pop4,is_show:1
new了一个对象,pop5,进行值拷贝:0
一个例子:
类:PoP
public class PoP { private int is_show; public PoP(int is_show) { super(); this.is_show = is_show; } public int getIs_show() { return is_show; } public void setIs_show(int is_show) { this.is_show = is_show; } }
测试类:TestPoP
package org.codepackage.test; import java.util.HashMap; import java.util.Map; public class TestPoP { public static void main(String [] args){ PoP pop1=new PoP(0); Map map=new HashMap(); map.put("001",pop1); pop1=(PoP) map.get("001"); PoP pop3=pop1; PoP pop4=new PoP(0); pop4=pop1; PoP pop5=new PoP(0); pop5.setIs_show(pop1.getIs_show()); System.out.println("修改前:pop1,is_show:"+pop1.getIs_show()); pop1.setIs_show(1); pop1=(PoP)map.get("001"); System.out.println("修改后,pop1,is_show:"+pop1.getIs_show()); System.out.println("地址引用,pop3,is_show:"+pop3.getIs_show()); System.out.println("重新new了一个,pop4,is_show:"+pop4.getIs_show()); System.out.println("new了一个对象,pop5,进行值拷贝:"+pop5.getIs_show()); } }
输出结果:
修改前:pop1,is_show:0
修改后,pop1,is_show:1
地址引用,pop3,is_show:1
重新new了一个,pop4,is_show:1
new了一个对象,pop5,进行值拷贝:0
相关文章推荐
- Java中对对象的操作是引用操作-建立Temp对象是,应该在循环里面new一个新的地址,再使用add添加到集合中去
- java引用传递和c地址传递
- Java中, 不存在引用传递(也就是地址传递)一说, 全部都是值传递
- 对java对象的地址引用及值引用
- Java中集合list的add方法添加的是地址(引用)不是值
- C++与Java,C#的异同(一):值,地址,引用
- Java中如何获取对象(引用)地址?
- C语言结构体,C语言结构体指针,java对象引用,传值,传地址,传引用
- 详解java的值传递、地址传递、引用传递
- 【Java】AKKA文档(java版)—角色的引用、路径和地址
- Java中的值传递和地址传递(传值、传引用)
- java 值传递及地址传递(引用传递)
- Java中引用变量的使用_传引用就是传地址。因为"传地址数值"比"传对象的拷贝" 简单 。
- Java面向对象【经典案例】数组是对象,其变量的值是引用地址
- Java引用与地址盲点
- Java对象句柄(指针,引用地址)
- [java]引用类型传的是地址
- java引用地址传递的实例
- java 值传递 引用传递(又叫地址传递,对象传递)
- java 值传递与地址传递(引用)的区别