Java String.replace 差异 java 12 和 13
Java difference in String.replace between java 12 and 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
发现这可能是由于:
Optimize String.replace(CharSequence, CharSequence) for common cases
这是意外行为吗?
是的,我知道 equals 方法。
API 规范不保证 String.replace
returns 是一个新的 String 对象还是在可能的情况下重用原始对象。比较的结果是“未指定”。这意味着它可能会从一个版本更改为下一个版本,就像您发现的那样。
使用 .equals 方法比较字符串是否相等。
我注意到 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
发现这可能是由于:
Optimize String.replace(CharSequence, CharSequence) for common cases
这是意外行为吗?
是的,我知道 equals 方法。
API 规范不保证 String.replace
returns 是一个新的 String 对象还是在可能的情况下重用原始对象。比较的结果是“未指定”。这意味着它可能会从一个版本更改为下一个版本,就像您发现的那样。
使用 .equals 方法比较字符串是否相等。