publicclassTestS{publicstaticvoidtest(Stringstr)//这里stringstr是定义了一个新的对象?{str="world";}publicstaticvoidmain(String[]args){Stringstr=newString("hello");test(st...
public class TestS
{
public static void test(String str)//这里string str 是定义了一个新的对象?
{
str = "world";
}
public static void main(String[] args)
{
String str = new String("hello");
test(str);
System.out.println(str); //str的值没有改变
}
}
我的理解是str里面是hello的地址,我吧hello的地址传了过去那么str=world后str应该改变为world。但是str还是hello请各位赐教,我这里不是很懂
tanshuangcq你好,我的理解是test里面的str就是str=new string(“hello”)的str地址,因为test(str)不是把str传过去了么,里面不是hello的地址么。
别处看见的“当然都是引用传递,这是毫无疑问的。
对于你的第一个程序来说, String str1 = new String("hello");申明定义一个String类型对象str1,
然后你调用了test(str1);这实际上是引用传递那么str1与str指向同一个对象“hello”,接着str = "world";
使str重新指向“wrold”,那么str1还是指向的“hello”,结果当然不会改变啊 ”
这个解释比较好理解,不过还是谢谢你啦
展开