Java字符串未转换为小写

3
为什么将字符串s转换为小写后会打印出"Hello, World"
public class Practice {
    public static void main(String[] args){
        String s = "Hello, World";
        s.toLowerCase();
        System.out.println(s);
    }
}
2个回答

8

String是不可变的。你需要重新赋值String#toLowerCase方法的结果给变量:

s = s.toLowerCase();

2

字符串是Java中特殊的对象。Java开发人员有意将它们创建为不可变的(出于各种安全和性能原因)。

这意味着当你认为你改变了一个String对象的状态时,实际上会创建一个新的String对象(而之前的并没有真正被改变)。

因此,为了使你的代码工作,你必须将方法的结果赋给某个字符串:

s = s.toLowerCase();

1
当你改变一个字符串对象的状态时,这种措辞是错误的。因为它是不可变的,你不能改变它的状态。任何涉及改变对象状态的操作都会创建一个新的对象,其状态已经被更改,而旧对象的状态将保持不变。 - Luiggi Mendoza
@LuiggiMendoza 我在写的时候考虑了一下(是否会让人困惑)。看来确实让人困惑了。已经修好了,谢谢! - darijan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接