此问题已在此处有答案:
Is Java "pass-by-reference" or "pass-by-value"?(90答案)
关闭4天前.
String res = "";
Solution.reverse("hellowolrd", res);
System.out.println(res);
public static void reverse(String str, String result) {
if(str.length()==0) return;
result += str.charAt(str.length()-1);
reverse(str.substring(0,str.length()-1),result);
}
为什么res变量在我调用reverse()后打印出来时是空的
2条答案
按热度按时间polkgigr1#
因为
result
是传递给reverse
方法的res
的副本,原始res
保持不变。您可以做的一件事是使用
StringBuilder
,它将修改底层存储。vxqlmq5t2#
一个函数通过给它赋一个新值来改变它的参数(这就是
+=
正在做的),在这个函数之外不会有任何效果。把你的代码改为(顺便说一句,这不是反转String的最佳方法):