рд╣реИрд╢рдХреЛрдб () рдФрд░ рдмрд░рд╛рдмрд░реА () рдХреЛ рд╕рдордЭрдирд╛


рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реБрд░реВ рдХреА рд╣реИ, рдФрд░ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рдпрд╣ рд▓реЗрдЦ рд╢реБрд░реБрдЖрддреА рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ, рдФрд░, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рд╖рдп рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ " hashCode рдФрд░ equals "ред
рдореИрдВ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рдореИрдВ рдХреБрдЫ рдЧрд▓рдд рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдЧрд▓рддреА рдпрд╛ рдЕрд╢реБрджреНрдзрд┐ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭрд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВред

рд╣реИрд╢ рдХреЛрдб рдХреНрдпрд╛ рд╣реИ?


рдпрджрд┐ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рддреЛ рд╣реИрд╢ рдХреЛрдб рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд▓ рд╣реИ, рд╣реИ рдирд╛? рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рдХреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдЬреЛ рдордирдорд╛рдиреА рд▓рдВрдмрд╛рдИ ( рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ ) рдХреЗ рдПрдХ рд╕рд░рдгреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ рез
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЪрд▓рд╛рдПрдБ:
 public class Main { public static void main(String[] args) { Object object = new Object(); int hCode; hCode = object.hashCode(); System.out.println(hCode); } } 

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреВрд░реЗ 10 рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреАред рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рд╣рдорд╛рд░реА рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рд╡рд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдЬрд╛рд╡рд╛ рдореЗрдВ, рдпрд╣ рдПрдХ рдЖрджрд┐рдо рдЕрдВрддрд░ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ 4 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ, рдФрд░ -2,147,483,648 рд╕реЗ 2,147,483,647 рдирдВрдмрд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдПрдХ рд╣реИрд╢ рдХреЛрдб рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЗрд╕рдХреА рд╕реАрдорд╛, рдЬреЛ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд┐рдо рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ int рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИред

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдкрдврд╝рддрд╛ рд╣реИ:
рдордирдорд╛рдиреА рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд╕рд░рдгреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреАред
рдордирдорд╛рдиреА рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд╕рд░рдгреА рд╕реЗ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рдПрдХ рд╡рд╕реНрддреБ рд╕реЗ рд╣реИред 1 рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдордирдорд╛рдиреА рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рдХрд╛рд░ рдХреА Object ред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЬрд╛рд╡рд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдПрдХ рд╣реИрд╢ рдХреЛрдб рдПрдХ рдкрджреНрдзрддрд┐ рдХрд╛ рдкреВрд░реНрдгрд╛рдВрдХ рдкрд░рд┐рдгрд╛рдо рд╣реИ рдЬреЛ рдПрдХ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╡рд┐рдзрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рд╕рдорд╛рди рдЗрдирдкреБрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП, рд╣реИрд╢ рдХреЛрдб рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рд░рд╣реЗрдЧрд╛ред рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдВрднрд╡ рд╣реИрд╢ рдХреЛрдб рдХрд╛ рд╕реЗрдЯ рдЖрджрд┐рдо int рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕реАрдорд┐рдд рд╣реИ, рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕реЗрдЯ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реА рдХрд▓реНрдкрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИред рдпрд╣рд╛рдБ рд╕реЗ рдЗрд╕ рдХрдерди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: "рдХрдИ рд╡рд╕реНрддреБрдПрдВ рдХрдИ рд╣реИрд╢ рдХреЛрдб рд╕реЗ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИрдВред" рдЗрд╕ рд╕реАрдорд╛ рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╣реИрд╢ рдХреЛрдб рд╕рдВрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:

рд╡рд╣ рд╕реНрдерд┐рддрд┐ рдЬрдм рд╡рд┐рднрд┐рдиреНрди рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕рдорд╛рди рд╣реИрд╢ рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВ, рдХреЛ рдЯрдХрд░рд╛рд╡ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЯрдХреНрдХрд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИрд╢ рдХреЛрдб рдкреАрдврд╝реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред рд╕рдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕рдорд╛рди рдлрд╝реАрд▓реНрдб рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╢реНрд░реЗрдгреА рдХреА рд╡рд╕реНрддреБрдПрдБ рд╣реИрдВред

  1. рд╕рдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП, рд╣реИрд╢ рдХреЛрдб рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рд░рд╣реЗрдЧрд╛;
  2. рдпрджрд┐ рд╡рд╕реНрддреБрдПрдВ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рд╣реИрд╢ рдХреЛрдб рд╕рдорд╛рди рд╣реИрдВ (рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ, рдирд┐рдпрдо 3 рджреЗрдЦреЗрдВ)ред
  3. рдпрджрд┐ рд╣реИрд╢ рдХреЛрдб рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдЗрдирдкреБрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди (рдЯрдХрд░рд╛рд╡) рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ;
  4. рдпрджрд┐ рд╣реИрд╢ рдХреЛрдб рдЕрд▓рдЧ рд╣реИрдВ, рддреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ;

рд╕рдорддреБрд▓реНрдпрддрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ред equals() рд╡рд┐рдзрд┐


рдЬрд╛рд╡рд╛ рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, new рдСрдкрд░реЗрдЯрд░ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдХреБрдЫ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ "рдмреНрд▓реИрдХрдмреЙрдХреНрд╕" рдХрд╣рд╛ рдЬрд╛рдПред

рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ 2
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЪрд▓рд╛рдПрдБ:
 public class BlackBox { int varA; int varB; BlackBox(int varA, int varB){ this.varA = varA; this.varB = varB; } } 

BlackBox рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВред
 public class DemoBlackBox { public static void main(String[] args) { BlackBox object1 = new BlackBox(5, 10); BlackBox object2 = new BlackBox(5, 10); } } 

рджреВрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореЗрдореЛрд░реА рдореЗрдВ рджреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред



рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ, рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕рдорд╛рди рд╣реИ, рдЕрд░реНрдерд╛рддреН, рд╕рдорддреБрд▓реНрдп рд╣реИред Object рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕рдорддреБрд▓реНрдпрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдорддреБрд▓реНрдп equals() рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рддреБрд▓рдирд╛ рдХрд░рддреА рд╣реИ рдФрд░ рдпрджрд┐ рд╕рд╛рдордЧреНрд░реА рд╕рдорддреБрд▓реНрдп рдФрд░ false рддреЛ рдирд╣реАрдВ рддреЛ рдЯрд╛рдЗрдк boolean true рдХрд╛ рдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

 object1.equals(object2);//   true,     

рд╕рдорддреБрд▓реНрдпрддрд╛ рдФрд░ рд╣реИрд╢ рдХреЛрдб рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣реИрд╢ рдХреЛрдб рдХреА рдЧрдгрдирд╛ рдСрдмреНрдЬреЗрдХреНрдЯ (рдлрд╝реАрд▓реНрдб рдорд╛рди) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдпрджрд┐ рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХреА рджреЛ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕рдорд╛рди рд╕рд╛рдордЧреНрд░реА рд╣реИ, рддреЛ рд╣реИрд╢ рдХреЛрдб рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ( рдирд┐рдпрдо 2 рджреЗрдЦреЗрдВ) ред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ:
 object1.equals(object2)//   true object1.hashCode() == object2.hashCode()//   true 

рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ "рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдо false рд╣реЛрдЧрд╛ред рдХрд╛рд░рдгреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Object рдХреНрд▓рд╛рд╕ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рдХрдХреНрд╖рд╛ рд╡рд╕реНрддреБ


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕рднреА рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдПрдВ Object рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИрдВред рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ hashCode() рдФрд░ equals() рд╡рд┐рдзрд┐рдпрд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред
рдЬрдм рдЖрдк рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ Object рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВред рдФрд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрдм hashCode() рдФрд░ equals() рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкреБрдирдГ рдкрд░рд┐рднрд╛рд╖рд┐рдд ( @overriding ) рдирд╣реАрдВ Object , рддрдм Object рд╕реЗ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди Object ред

Object рдХреНрд▓рд╛рд╕ рдореЗрдВ equals() рд╡рд┐рдзрд┐ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
 public boolean equals(Object obj) { return (this == obj); } 

рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╕рдордп, " == " рдСрдкрд░реЗрд╢рди рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдорд╛рдорд▓реЗ рдореЗрдВ true рд╣реЛ рдЬрд╛рдПрдЧрд╛ - рдЬрдм рд▓рд┐рдВрдХ рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЦреЗрддреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рд╕реЗ, equals рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред
 public class DemoBlackBox { public static void main(String[] args) { BlackBox object3 = new BlackBox(5, 10); BlackBox object4 = object3;//  object4   //-     object3 object3.equals(object4)//true } } 




рдЕрдм рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рдХрд┐ Object.equals() рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓рд┐рдВрдХ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИ, рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВред
рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ hashCode() , рдЬреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

Object рдХреНрд▓рд╛рд╕ рдореЗрдВ hashCode() рд╡рд┐рдзрд┐ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
 public native int hashCode(); 

рд╡рд╣ рд╕рдВрдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред native рдХреАрд╡рд░реНрдб рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C, C ++ рдпрд╛ рдЕрд╕реЗрдВрдмрд▓рд░ рдореЗрдВред рд╡рд┐рд╢рд┐рд╖реНрдЯ native int hashCode() C ++ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рд╕реНрд░реЛрдд рд╣реИрдВ - http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/tip/trc/share/vm/runtime/synchronizer.cpp рдлрд╝рдВрдХреНрд╢рди get_next_hash ред

Object рдХреНрд▓рд╛рд╕ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдХреЛрдб рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп, рдкрд╛рд░реНрдХ-рдорд┐рд▓рд░ рдЖрд░рдПрдирдЬреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╣реИрд╢ рдХреЛрдб рд╣реЛрдЧрд╛ред

рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ Object рдХреНрд▓рд╛рд╕ рд╕реЗ hashCode() рдкрджреНрдзрддрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо new BlackBox() рд╡рд░реНрдЧ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрд╢ рдХреЛрдб рдорд┐рд▓реЗрдВрдЧреЗред рдпрд╣реА рдирд╣реАрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдкрд░, рд╣рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдореВрд▓реНрдп рдорд┐рд▓реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИред

рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдирд┐рдпрдо рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: "рдпрджрд┐ рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХреА рджреЛ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕рдорд╛рди рд╕рд╛рдордЧреНрд░реА рд╣реИ, рддреЛ рд╣реИрд╢ рдХреЛрдб рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред " рдЗрд╕рд▓рд┐рдП, рдПрдХ рдХрд╕реНрдЯрдо рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╕рдордп, hashCode() рдФрд░ equals() рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ рддрд╛рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПред
рдпрд╣ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдпрд╛ рдЖрдИрдбреАрдИ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╣рдг рдореЗрдВ, рдпрд╣ рд╕реНрд░реЛрдд рд╣реИ -> рд╣реИрд╢рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ () рдФрд░ рдмрд░рд╛рдмрд░ () ...

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдмреНрд▓реИрдХрдмреЙрдХреНрд╕ рд╡рд░реНрдЧ рдлреЙрд░реНрдо рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ:
 public class BlackBox { int varA; int varB; BlackBox(int varA, int varB){ this.varA = varA; this.varB = varB; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + varA; result = prime * result + varB; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; BlackBox other = (BlackBox) obj; if (varA != other.varA) return false; if (varB != other.varB) return false; return true; } } 


рдЕрдм hashCode() рдФрд░ equals() рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ рдФрд░ рд╡рд╕реНрддреБ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреА рд╣реИрдВ:

 object1.equals(object2);//true object1.hashCode() == object2.hashCode();//true 


рдпрджрд┐ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреНрд░рднрд╛рд╡реА рдЬрд╛рд╡рд╛ - рдЬреЛрд╢реБрдЖ рдмрд▓реЛрдЪ , рдЕрдзреНрдпрд╛рдп 3, рдЖрдЗрдЯрдо 8.9 рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо


рдПрдХ рдХрд╕реНрдЯрдо рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ hashCode() рдФрд░ equals() рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╡реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк Object рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ java.util.HashMap рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред HashMap рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реЛрдВрдЧреА, рдХреНрдпреЛрдВрдХрд┐ HashMap рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рд╣реИрд╢рдХреЛрдб equals() рдФрд░ equals() hashCode() рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди tarzan82 рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рддреНрд░ рдкреЛрд╕реНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИред HashMap ред

рд╕рдВрджрд░реНрдн:


Source: https://habr.com/ru/post/In168195/


All Articles