char ch[]={'H','e','l','l','o'};System.out.println(ch+"");
System.out.println(ch);为什么俩个打印的不一样???还有public void change(char[] ch)
{
    ch[0] = 'h';
}调用change(ch);后原来的数组中的H会变小写
谁帮忙解释下值传递和引用传递啊
谢谢

解决方案 »

  1.   

    第一个是ch+""要把ch显式转成string,否则调用的是 ch.toString() + ""; ch是对象值传递:基本数据类型int, long, char..., 还有String, Integer, Long...
    其余的都是引用传递
      

  2.   

    那System.out.println(ch);不是调用toString()么???System.out.println(ch);打印出的是Hello
    System.out.println(ch+"");打印出的是地址
      

  3.   

    System.out.println(ch);打印出的是Hello .因为是调用ch的toStirng()方法。
    System.out.println(ch+"");打印出的是地址。 你ch是char的数组,一个数组加一个空字符串你说是什么,根本乱搞嘛。给你打印个地址就不错了。否则就是报错了。
      

  4.   

    你试试
    System.out.println(ch.toString());看看打印出什么先试过再说
    别想当然
      

  5.   

    System.out.println(ch);
    这个打印出hello是因为OutputStream里面有这么一个方法println(char[] c)
      

  6.   

    System.out.println(ch+"");
    使用+的时候ch需要toString()。故输出的是地址public void change(char[] ch) 

        ch[0] = 'h'; 

    传的是地址,当然是可以改变里面的值了