class People1{
public String sex;
public int age;
public void say(){
System.out.println("小黑:"+sex+" 年龄:"+age);
}
}
public class People {
public static void main(String[] args) throws InterruptedException {
People1 p1 =new People1(); //里面先new了两个对象,分别问p1和p2
People1 p2 =new People1();
p1=p2; //p1.p2指向同一地址p2.
p1.sex="雄性";
p1.age=6;
p1.say();
p2.sex="雌性";
p2.age=12;
p2.say();
}
}
运行结果:
例子先new了两个对象,分别问p1和p2,然后将p2的值附给了p1,这时,p1的指向就发生了变化:p1就不再指向原来的地址了,此时p1就指向了p2所指向的地址了,也就是说:p1和p2指向了同一块堆内存。这时先给p1的属性赋值,并且调用了p1的say方法,这个时候控制台就打印出来p1所指向的堆地址(实际此时p2指向的也是这个堆地址);然后又给p2的属性赋值,并且调用了p2的say方法,这个时候控制台就会打印出来p2所指向的堆地址(实际此时p1指向的也是这个堆地址),两次打印出来的字符串是不一样的,因为数值发生了改变。
posted on 2010-10-31 22:48
龍ぜ殘剑 阅读(115)
评论(0) 编辑 收藏