大家都知道JAVA中只有值传递,下面看看这段代码
void method1(){
StringBuffer x=new StringBuffer("Hello");
this.change(x);
System.out.println(x);
}void int change(StringBuffer i){
 i.append(" world!");
}输出结果是 Hello World! 难道这传递的不是引用吗??

解决方案 »

  1.   

    不要拘泥于文字,java中基本类型参数才传值,其余对象皆为引用(即对象在内存中的地址)
      

  2.   

    没错,当然是值传递,这里传递的是x的内存地址,在方法change里面针对内存地址指向的地方的数据进行修改了,出去方法体,i也就改变了
    你可以这样测试一下他是否值传递,change方法改成:
    void int change(StringBuffer i){ 
    i=new StringBuffer("xxxxxx"); 

    看看出了方法体后print出什么东西
      

  3.   

    Java 只要值传递
    LZ那传的是对象的地址
    习惯了就好
      

  4.   

    java里面没有引用传递,只有值传递。楼主背过吧,当有引用传递的时候可以理解为传的是对象的或者引用的地址,这样统一为值传递。
      

  5.   

    楼主传递的是对象的引用,有的说是java的指针,有的说是句柄!