2015-08-06 2 views

ответ

8

String s неизменяемы. Вам необходимо заново присвоить результат String#toLowerCase переменной:

s = s.toLowerCase(); 
2

Строки особый вид объектов в Java. Разработчики Java сознательно создали их как неизменяемым (для различных соображений безопасности и производительности).

Это означает, что когда вы думаете, что вы изменяете состояние объекта String, на самом деле создается новый объект String (а предыдущий не изменяется).

Поэтому, чтобы сделать ваш код работать, вы должны присвоить результат метода некоторой строки:

s = s.toLowerCase(); 
+1

* при изменении состояния объекта строки * эта формулировка неверна. Поскольку он неизменен, вы не можете изменить его состояние. Любая операция, связанная с изменением состояния объекта, создаст новый объект с новым состоянием, а состояние объекта * old * останется неизменным. –

+0

@LuiggiMendoza Я думал об этом, пока я его писал (было бы непонятно). Кажется, это было так. Исправлено, спасибо! – darijan

Смежные вопросы