对于其他的对象,是楼上认为的传递reference引用但对于String 却不是这样,我不知道是什么原因,只是知道String比较特殊的。

解决方案 »

  1.   

    这个例子中,如果将changeStr的参数理解value为一个指向字符串的指针,当然会认为value的值在函数外已经改变了,这是C。实际上value确实是个指针,value = new String("different");这一句中,new String("different")返回了一个新的指针,value变成了指向字符串“different”的指针,而value中保存的“different”的地址值是在函数内容有效的,不影响函数外变量。