Java字符串未转换为小写

Java字符串未转换为小写,java,string,Java,String,为什么字符串s转换成小写后会打印“Hello,World” public class Practice { public static void main(String[] args){ String s = "Hello, World"; s.toLowerCase(); System.out.println(s); } } Strings是不可变的。您需要将String#toLowerCase的结果重新分配给变量: s = s

为什么字符串
s
转换成小写后会打印
“Hello,World”

public class Practice {
    public static void main(String[] args){
        String s = "Hello, World";
        s.toLowerCase();
        System.out.println(s);
    }
}

String
s是不可变的。您需要将
String#toLowerCase
的结果重新分配给变量:

s = s.toLowerCase();

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

这意味着,当您认为您更改了字符串对象的状态时,实际上会创建一个新的字符串对象(而之前的字符串对象并没有真正更改)

因此,要使代码正常工作,必须将方法的结果分配给某个字符串:

s = s.toLowerCase();

更改字符串对象的状态时,此措辞是错误的。因为它是不可变的,所以不能更改它的状态。任何涉及更改对象状态的操作都将创建一个具有新状态的新对象,而旧对象的状态将保持不变。@LuiggiMendoza我在编写它时正在考虑它(是否会混淆)。看起来确实如此。修好了,谢谢!