您的位置:首页 > 编程语言 > Java开发

java中的地址引用

2011-05-12 17:52 127 查看
java中的对象是地址引用,如:HashMap,通过key取得object,修改了oject的属性后,不用重新替换掉原hashMap中的对象,它会自动更新。这种方法很好用,但有时也要仔细使用。如果只想取一个备份的object处理,那则需要重新new一个对象,然后进行值拷贝(将value一个个复制过去s)。

一个例子:

类: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: