【发布时间】:2017-03-28 07:10:57
【问题描述】:
我有以下代码
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”
谢谢
【问题讨论】:
-
字符串在java中是不可变的
-
可能的副本可能会帮助您了解通过引用传递背后的逻辑stackoverflow.com/questions/9404625/java-pass-by-reference