1

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)

这是意外的行为吗?

是的,我知道 equals 方法。

4

1 回答 1

5

API 规范不保证是否String.replace返回一个新的 String 对象,或者它是否尽可能重用原始对象。比较的结果是“未指定”。这意味着它可能会从一个版本更改为下一个版本,就像您发现的那样。

使用 .equals 方法比较字符串是否相等。

于 2020-07-05T22:33:15.770 回答