一膏潮、== 與 equals
==:時(shí)判斷對(duì)象地址,基本數(shù)據(jù)類型判斷值掌腰。
equals:判斷對(duì)象相等狰住,若沒(méi)有覆寫則等同于==。
二齿梁、hashcode催植、equals重寫
若重寫equals則hashcode要一起重寫,equals中判斷的屬性hashcode中要應(yīng)用勺择。
equals返回true時(shí)创南,hashcode值也要相同。
一種hashcode寫法:
public int hashcode(){
int result = 17;
result = 31 * result + int;
result = 31 * result + Float.floatToIntBits(float);
result = 31 * result +( int)(long ^ (long >>> 32));
long mDoubleTemp = Double.doubleToLongBits(double);
result = 31 * result + (int)(mDoubleTemp ^ (mDoubleTemp >>> 32));
result = 31 * result + (string == null ? 0 : string.hashcode());
result = 31 * result + (obj == null ? 0 : obj.hashcode());
returun result;
}
31 *i = 32 * i - i = (i<<5) - i JVM效率更高
更少的乘積結(jié)果省核,減少?zèng)_突稿辙。