随笔 - 40, 文章 - 0, 评论 - 20, 引用 - 0
数据加载中……

Java对象操作(自己体会,不一定说的正确,但是都是在程序中测试)

  Java中c中的指针的概念,但是我在使用中还是碰到过一些问题,如我把一个一个对象A赋值给对象B时,这两个对象有一个改变,那么另外一个也相应的改变。下面分别谈谈这可能发生问题的几种情况:

<一>从“一个对象到另一个对象的赋值”,如:

        Class  A = new Class();

       Class  B  = A;

       这种情况实际把句柄从一个地方复制到另外一个地方,这种情况下对象B和A实际指向的是同一个句柄,更新B会影响到A,同样更新A也会影响到B。

<二>把对象作为方法的参数传递到一个方法中。Java方法的参数传递可以分成两种:一种是值传递,这种一般是简单的数据类型,如int,long,double,char这些等;一种类似是c中的引用传递,就是把对象作为一个引用传递给方法参数,在这种情况下,在方法中把这个传入的参数对象改变,那么相应的传入这个参数引用的对象也相应的改变。如:

     Number A = new Number();
     A.num   = 9;
     test(A);

     方法定义:

    public  void   test(Number n){
      n.num = 99;
    }

   那么A的num值会变成99.

<三>;把对象保存在ArrayList中.如果把一个对象保存在一个AyyayList中,如果这个对象再发生改变,那么在这个ArrayList中保存的对象也会改变,说白了还是两个还是公用同一个句柄.如:

   Number A = new Number();
     A.num = 100;
     java.util.ArrayList list = new ArrayList();
     list.add(A);
     A.num = 999;
     Number B = (Number)list.get(0);
     System.out.println(B.num);

那么输出为999,对象A的更改影响到了ArrayList中的保存的对象.

 

posted on 2005-06-08 00:19 月亮 阅读(263) 评论(0)  编辑  收藏


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


网站导航: