我正在深入研究Java的基础知识.我在本文中推断,java equals方法意味着,如果两个对象相等,那么它们必须具有相同的hashCode().
这是我的例子.
public class Equals {
/**
* @param args
*/
public static void main(String[] args) {
String a = new String("a");
String b = new String("a");
System.out.println("a.hashCode() "+a.hashCode());
System.out.println("b.hashCode() "+b.hashCode());
System.out.println(a == b);
System.out.println(a.equals(b));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
a.hashCode()97
b.hashCode()97
false
true
实际Java语言等于方法
public boolean equals(Object obj) {
return (this == obj);
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,a.equals(b)返回true,意味着满足条件a == b.但那么为什么a == b在这个例子中返回false?
hashCode和地址不一样吗?另外,当我们说a == b或其他什么时,hashCode是否被比较?
NIN*_*OOP 13
Stringclass已重写该equals()方法.请遵循String#equals()文档.
a.equals(b)返回true,表示满足条件a == b
这是默认的实现equals()在Object类,String类重写了默认的实现.当且仅当参数不为null并且是表示与此对象相同的字符序列的String对象时,它才返回true.
hashCode和地址不一样吗?
不一定,为了进一步阅读hashCode().
| 归档时间: |
|
| 查看次数: |
18344 次 |
| 最近记录: |