对象的赋值和引用

一、对于对象的赋值问题:

实例:

1.类Tank

 

public class Tank {
   public int level;
   public Tank(){}
}

 

2.类Assignment


public class Assignment {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
       Tank t1 = new Tank();
       Tank t2 = new Tank();
       t1.level = 17;
       t2.level = 27;
       System.out.println("1.t1.level的值是:"+t1.level+"," +
         ""+"t2.levle的值是:"+t2.level);
       t1 = t2;
       System.out.println("2.t1.level的值是:"+t1.level+"," +
            ""+"t2.levle的值是:"+t2.level);
       t1.level=66;
       System.out.println("3.t1.level的值是:"+t1.level+"," +
            ""+"t2.levle的值是:"+t2.level);
 }

}

 

3.结果:

 

   1.t1.level的值是:17,t2.levle的值是:27
   2.t1.level的值是:27,t2.levle的值是:27
   3.t1.level的值是:66,t2.levle的值是:66


4.说明:对于把t2的引用赋值给t1后又改变t1的成员

 

 对于赋值操作的是一个对象的引用.所以修改t1的同时也改变了t2,这是由于t1和t2包含的是相同的引用,他们指向相同的对象。

(原本t1包含的对对象的引用时指向一个值为17的对象,在对t1赋值的时候,这个引用被覆盖了,也就是丢失了,而那个不再被引用的对象最终会被"垃圾回收器"自动清理)

二、对象的传递

  实例:

 1. 类Letter

    class Letter{

      char c;

     }

 2. 类PassObject

   class PassObject{
 
      public   static  void f1(Letter y){
         y.c='z';
       }
      public   static  void f2(Letter y){
          y.c='z';
       }
       public static void main(String []args){
       //例子1
          Letter x1 = new Letter();
          x1.c='a';
           System.out.println("1.x1.c的值:"+x1.c);
            f1(x1);          
            System.out.println("2.x1.c的值:"+x1.c);
         //例子2
            Letter x2 = new Letter();
            PassObject p=new PassObject();
            x2.c='a';
            System.out.println("1.x2.c的值:"+x2.c);
            p.f1(x2);          
            System.out.println("2.x2.c的值:"+x2.c);
        }

   }

 3.结果:

      1.x1.c的值:a
      2.x1.c的值:z
      1.x2.c的值:a
      2.x2.c的值:z

4.说明:对象在函数中的传递过程中(x1和x2->y),其实x1(或x2)和y最终都是指向同一对象,他们只是对象的不同别名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值