Java中的toUpperCase不起作用

use*_*510 12 java string

我有一个字符串:

String c = "IceCream";
Run Code Online (Sandbox Code Playgroud)

如果我使用toUpperCase()函数然后它返回相同的字符串,但我想得到"ICECREAM".

问题出在哪儿?

And*_*and 32

代码

String c = "IceCream";
String upper = c.toUpperCase();
System.out.println(upper);
Run Code Online (Sandbox Code Playgroud)

正确打印"ICECREAM".但是,原始字符串c不会更改.Java中的字符串是不可变的,因此字符串上的所有操作都返回一个新副本.


sme*_*ola 12

您是否期望原始变量c被更改toUpperCase()?字符串是不可改变的; .toUpperCase()返回新字符串等方法,保留原始未修改的字符串:

String c = "IceCream";
String d = c.toUpperCase();
System.out.println(c); // prints IceCream
System.out.println(d); // prints ICECREAM
Run Code Online (Sandbox Code Playgroud)


Zoh*_*aib 9

该对象无法更改,因为它String是不可变的.但是,您可以将引用指向新实例,该实例全部为大写:

String c = "IceCream";
c = c.toUpperCase();
Run Code Online (Sandbox Code Playgroud)