带字符串的代码说明

时间:2017-12-20 19:22:40

标签: java string

好的,所以我试图向朋友解释下面问题的答案,但我不知道怎么做。我知道过程方法并没有改变,答案是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);

2 个答案:

答案 0 :(得分:0)

您正在为变量s分配新值。这不会更改传递给s方法的process()的值,因此程序会打印

ABCD

答案 1 :(得分:0)

发生这种情况,因为你用它的价值来称呼它,而且它没有改变

您可以重写您的方法,例如:

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);