1. 程式人生 > >重寫hashCode中的31值得解釋說明筆記

重寫hashCode中的31值得解釋說明筆記

對象 調用 prim name ash return equal final rri

/* * 為什麽是31? * 1,31是一個質數,質數是能被1和自己本身整除的數 * 2,31這個數既不大也不小 * 3,31這個數好算,2的五次方-1,2向左移動5位 */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) //調用的對象和傳入的對象是同一個對象 return true; //直接返回true if (obj == null) //傳入的對象為null return false; //返回false if (getClass() != obj.getClass()) //判斷兩個對象對應的字節碼文件是否是同一個字節碼 return false; //如果不是直接返回false Person other = (Person) obj; //向下轉型 if (age != other.age) //調用對象的年齡不等於傳入對象的年齡 return false; //返回false if (name == null) { //調用對象的姓名為null if (other.name != null) //傳入對象的姓名不為null return false; //返回false } else if (!name.equals(other.name)) //調用對象的姓名不等於傳入對象的姓名 return false; //返回false return true; //返回true }

重寫hashCode中的31值得解釋說明筆記