这个问题在这里已有答案:
好的,所以我试图能够向朋友解释下面问题的答案,但我不知道如何。我知道过程方法不会改变s并且答案是ABCD(s没有改变),但我不知道为什么。是因为字符串是不可变的吗?我的朋友认为应该是CBA。有帮助吗?
public void process(String s)
{
s = s.substring(2, 3) + s.substring(1, 2) + s.substring(0, 1);
}
执行以下语句(在同一类中的方法中)打印的内容是什么?
String s = “ABCD”;
process(s);
System.out.println(s);
您正在为变量s
分配新值。这不会改变传递给s
方法的process()
的值,因此程序打印
ABCD
发生这种情况,因为你是通过它的价值来调用它,并且它不会改变
你可以重写你的方法,例如:
public static String process(String s)
{
return s.substring(2, 3) + s.substring(1, 2) + s.substring(0, 1);
}
然后你可以像这样使用它:
String s = "ABCD";
s = process(s);
System.out.println(s);