posts - 26,  comments - 14,  trackbacks - 0


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)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜