- hashcode的计算方式
把对象内每个有意义的Field计算出一个int类型的hashCode值:
类型 | 计算方式 |
---|---|
Boolean | hashCode=(f?0:1) |
整数类型(byte short int char) | hashCode=(int)f |
long | hashCode=(int)(f^(f>>>32)) |
float | hashCode=Float.floatToIntBits(f) |
double | long l = Double.doubleToLongBits(f); hashCode=(int)(l^(l>>>32)) |
普通引用类型 | hashCode=f.hashCode() |
- equals 比较的是对象的内容
- ‘=’比较的是对象的内存地址
注意:equals相等的,hashcode一定相等,反之,hashcode相等,equals不一定相等
近期评论