java传递的是引用,传递的是句柄,改变值,值传递的问题
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='g'; }}这个题的输出结果为
good and
gbc
为什么str的值没变
而ch[]的值变了呢
答案是Java变量传递的是“句柄”
句柄,就是一个引用,相当于C语言里的指针
java对象指向的是内存中的一个地址
特此更正:java变量传递是值传递,以前理解有错误,特别感谢rrsy23给予斧正
黑色头发 http://heisetoufa.iteye.com
页:
[1]