随笔-4  评论-2  文章-0  trackbacks-0
  置顶随笔
最近在做项目时碰到关于java值传递和引用传递的问题,查不了少文章,做了几个例子才搞明白,当然我总结出来的不一定是对的,欢迎大家来拍砖。主要有以下两条:
1.如果是基本类型,那么传递进去的就是值传递。
2.如果不是基本类型,那么传递进去的就是对象引用的拷贝。

以下是例子:
public class Test {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

public class Test1 {    
    private static Test staticTest;
    
    public static void main(String[] args) {
        Test t1 = new Test();
        call(t1);
        System.out.println(t1.getName());
    }
    
    public static void call(Test rt) {
        staticTest = new Test();
        staticTest.setName("abc");
        rt.setName("cba");
        rt = staticTest;
    }
}
此时的运行结果是什么?机器给出的结果是“cba”,为什么会这样,我理解如下:
rt.setName("cba");
此时rt是t1的一个复制,但是又不代表t1,但是rt和t1都指向同一个对象,无论通过rt还是t1来都会改变所引用对象的值。
rt = staticTest;
这时会把staticTest的引用赋给rt,但是rt只是t1的一个引用, rt此时指向staticTest,但是不会更改t1的值。
所以会发生以上的结果。不知道正确与否?



posted @ 2008-09-05 14:48 星光 阅读(237) | 评论 (2)编辑 收藏
仅列出标题