2017-03-28 37 views
-2

我有以下代码在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; 

我不明白,为什么当我打印“字”,变量仍打印“超级”即使我改变了它在reverseString方法。我知道字符串是通过引用传递的,而不是像原始值这样的副本。

如果我做word = reverseString(word)它打印扭转我所期望的,“repuS”

感谢

+1

字符串在java中是不可变的 – Jens

+0

可能的重复可能会帮助您在后面的逻辑下通过引用http://stackoverflow.com/questions/9404625/java-pass-by-reference – Arindam

回答

1

你不能改变reverseString字符串,要创建一个新的,返回新(您呼叫helper)。

需要注意Java中的字符串的第二个事情是,他们是不可变的 - 所有的字符串方法返回一个新的字符串,而不是修改你调用的方法之一。