public class Example {
 String str=new String("good");
 char[] ch={'a','b','c'};
 public static void main(String[] args){
  Example ex=new Example();
  ex.change(ex.str, ex.ch);
  System.out.println(ex.str+" and");
  System.out.println(ex.ch);
 }
 public void change(String str,char ch[]){
  str="test ok";
  ch[0]='g';
 }
}
这个题的输出结果为
good and
gbc
为什么str的值没变
而ch[]的值变了呢
答案是Java变量传递的是“句柄”
句柄,就是一个引用,相当于C语言里的指针
java对象指向的是内存中的一个地址
特此更正:java变量传递是值传递,以前理解有错误,特别感谢rrsy23给予斧正
黑色头发 http://heisetoufa.iteye.com










