`
yuan_xulong
  • 浏览: 87877 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于JAVA中的值传递与引用传递增

    博客分类:
  • Java
阅读更多
最近在做项目时碰到关于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的值。
所以会发生以上的结果。不知道正确与否?
[color=red][/color]
1
0
分享到:
评论
2 楼 liangwenzheng 2009-03-07  
楼上正解~
1 楼 archerboy 2009-03-06  
没错!
Java参数传递就是值传递,无论是值类型还是引用类型,形参得到的都是堆栈上的变量的copy

相关推荐

Global site tag (gtag.js) - Google Analytics