Java 的值传递 比较切实的一个例子

143 阅读1分钟

基本类型就不用说了,很清楚地能看到。主要是讨论下传递一个有引用对象的时候。

先来两段代码。

public class Test {     
    
    public static void main(String[] args) {         
        StringBuffer you= new StringBuffer("你家房子");     
        goBackHome(you);     
        System.out.println(you);     
    }     
         
    public static void goBackHome (StringBuffer relative) {     
        relative= new StringBuffer("亲戚家房子");     
    }     
    
} 

输出结果是: 你家房子

public class Test {     
    
    public static void main(String[] args) {         
        StringBuffer you= new StringBuffer("你家房子");     
        addTV(you);     
        System.out.println(you);     
    }     
         
    public static void addTV (StringBuffer relative) {     
        relative.append("添了台电视");     
    }     
    
} 

输出结果是:你家房子添了台电视

  • 其实这就像我们的房子一样,代码里的you是你自己。进入第一段代码的goBackHome方法(这天,你有个亲戚relative来家里借宿,你把房子的钥匙给了他,你的房子有了两个主人。过了一段时间之后,他不在你家里住了,回到了自己的家里。)。这对你和你的房子来说并没有什么影响,还是你原来的的房子。
  • 第二段代码里,addTV方法中,你的亲戚没有回家,他看你家还缺一台电视,所以给你家的房子添了台电视。这对于你的房子来说发生了改变,添了台电视。

总的来说,两段代码里面的方法中,传入的都是你的房子(值)。