为什么Java在equalsIgnoreCase方法中比较(this == another String)来检查字符串的大小写不敏感性?
另外,String equals方法是通过比较(this == another String)来比较两个对象的吗?
以下是Java 6中String类equalsIgnoreCase方法的实现。
另外,String equals方法是通过比较(this == another String)来比较两个对象的吗?
以下是Java 6中String类equalsIgnoreCase方法的实现。
public boolean equalsIgnoreCase(String anotherString) {
return (this == anotherString) ? true :
(anotherString != null) && (anotherString.count == count) &&
regionMatches(true, 0, anotherString, 0, count);
}
以下是Java 6:String类的equals实现。
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
String.equals
的实际实现是内置的,提供的 Java 实现只是参考代码(用于解释器、代码分析工具等)。 - Tagir Valeev@HotSpotIntrinsicCandidate
,但equals
没有。你确定它是内部化的吗? - Lii@HotSpotIntrinsicCandidate
标记只是给想将某个方法变成内部函数(或已经变成)的开发人员一个提示。这并不意味着该方法实际上是内部函数还是非内部函数。您可以在 HotSpot 源代码中看到实际的实现,在这里。 - Tagir Valeev@HotSpotIntrinsicCandidate
只是一个提示,但我猜想他们会将其放在所有在HotSpot中内置的方法上。显然我错了。你有任何想法为什么String#equals
没有这个提示吗? - Lii