public void method1 (String a)
{
a = a + "xyz";
method2 (a);
}
对于哪个“a”传递给method2 - 原始参数还是新的本地版本,是否存在歧义?
答案 0 :(得分:1)
""是引用的变量名,在您更改引用以引用新对象的方法中,因此当您调用method2
时,它会复制新引用。下面的一些基本插图。
method1Caller(){
a1 ---> "s"
method(a1) // copies a1 reference
}
method(a1){ //a1 points to "s" at this point
a = a + "xyz"; //changing reference
a ---> "sxyz"
method2(a); // copies a which reference "sxyz"
}
请注意" a"在method1Caller中仍将指向原始对象。
答案 1 :(得分:0)
对于哪个“a”传递给method2
有任何歧义
没有歧义。 a
中只有一个字符串method1
的实例。
原始参数或新的本地版本?
字符串a
将附加“xyz”以形成新的String对象,并将其传递给method2
。
您的代码基本类似于:
public void method1 (String a)
{
method2 (a+"xyz");
}
字符串是不可变的,因此您可以确保传递给method1
的“原始”字符串不会受到影响。