在Java中通过引用传递。帮帮我理解

时间:2017-03-28 07:10:58

标签: java pass-by-reference

我有以下代码

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;

我不明白为什么当我打印"字"变量它仍然打印"超级"即使我在reverseString方法中更改了它。我知道字符串是通过引用传递的,而不是像原始值那样的复制。

如果我做word = reverseString(word)它会打印出与我期望相反的内容," repuS"

谢谢

1 个答案:

答案 0 :(得分:1)

您没有更改reverseString中的字符串,您正在创建一个新字符串并返回新字符串(您称之为helper)。

关于Java中字符串的第二个注意事项是它们是不可变的 - 所有字符串方法都返回一个新字符串,而不是修改你正在调用方法的字符串。