遇到的一个问题:
运行结果:false
public static void main(String[] args) {
String s = "Hello";
char[] ch = {'H','e','l','l','o'};
System.out.println(s.equals(ch));
}
为什么呢?原来是查看完api之后发现String类里面重写的equals()方法,主要比较的是两个字符串的内容,除此之外才比较其他传进来的Object对象引用的内存地址值。
查看的String类重写的equals()方法:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String aString = (String)anObject;
if (coder() == aString.coder()) {
return isLatin1() ? StringLatin1.equals(value, aString.value)
: StringUTF16.equals(value, aString.value);
}
}
return false;
}