在Java中通过引用传递。帮我理解
我有以下代码
public static void main(String[] args) {
String word = "Super";
reverseString(word);
System.out.println(word);
}
public static String reverseString(String word) {
String helper = "";
int i = word.length() - 1;
while (i >= 0) {
helper += word.charAt(i);
i--;
}
return helper;
我不明白为什么当我打印“word”变量时,它仍然打印“Super”,即使我在reverseString方法中更改了它。我知道字符串是通过引用传递的,而不是像原语值那样的副本
如果我这样做word = reverseString(word)
,它会打印出我所期望的相反的“repuS”
谢谢
# 1 楼答案
您没有更改
reverseString
中的字符串,而是创建一个新字符串并返回新字符串(您称之为helper
)关于Java中的字符串,需要注意的第二件事是它们是不可变的——所有字符串方法都返回一个新字符串,而不是修改调用该方法的字符串