有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在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) 个答案

  1. # 1 楼答案

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

    关于Java中的字符串,需要注意的第二件事是它们是不可变的——所有字符串方法都返回一个新字符串,而不是修改调用该方法的字符串