Разница в Java в String.replace между Java 12 и 13
Я заметил разницу в поведении String.replace(CharSequence, CharSequence)
между Java 12 и 13.
java 12 и ранее:
System.out.println("String"=="String".replace("g","g")); //false
java 13 и новее:
System.out.println("String"=="String".replace("g","g")); //true
Установлено, что это, вероятно, связано с:
Оптимизировать String.replace(CharSequence, CharSequence) для общих случаев
Это неожиданное поведение?
Да, я знаю о методе равенства.
1 ответ
Решение
Спецификация API не дает никаких гарантий относительно того, String.replace
возвращает новый объект String или, если возможно, повторно использует оригинал. Результат сравнения "не указан". Это означает, что он может меняться от одной версии к другой, как вы уже обнаружили.
Используйте метод.equals для сравнения строк на предмет равенства.