嗨,我正在为我的 scja 考试而学习,并且有一个关于通过 ref/value 传递的字符串以及它们如何不可变的问题。以下代码输出“abc abcfg”。
我想知道为什么会这样?我不明白方法 f 内部发生了什么。字符串是按值传递的,所以它肯定应该在方法内更改为“abcde”吗?因为如果 b+="fg" 附加到字符串,为什么它在方法内不起作用?
谢谢!
public class Test {
public static void main(String[] args){
String a =new String("abc");
String b = a;
f(b);
b+="fg"
System.out.println(a + " " + b);
}
public static void f(String b){
b+="de";
b=null;
}
}