
рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реБрд░реВ рдХреА рд╣реИ, рдФрд░ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рдпрд╣ рд▓реЗрдЦ рд╢реБрд░реБрдЖрддреА рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ, рдФрд░, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рд╖рдп рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ "
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
рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕реАрдорд┐рдд рд╣реИ, рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕реЗрдЯ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реА рдХрд▓реНрдкрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИред рдпрд╣рд╛рдБ рд╕реЗ рдЗрд╕ рдХрдерди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: "рдХрдИ рд╡рд╕реНрддреБрдПрдВ рдХрдИ рд╣реИрд╢ рдХреЛрдб рд╕реЗ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИрдВред" рдЗрд╕ рд╕реАрдорд╛ рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╣реИрд╢ рдХреЛрдб рд╕рдВрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:
- рдпрджрд┐ рд╣реИрд╢ рдХреЛрдб рдЕрд▓рдЧ рд╣реИрдВ, рддреЛ рдЗрдирдкреБрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред
- рдпрджрд┐ рд╣реИрд╢ рдХреЛрдб рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдЗрдирдкреБрдЯ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред
рд╡рд╣ рд╕реНрдерд┐рддрд┐ рдЬрдм
рд╡рд┐рднрд┐рдиреНрди рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ
рд╕рдорд╛рди рд╣реИрд╢ рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВ, рдХреЛ рдЯрдХрд░рд╛рд╡ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЯрдХреНрдХрд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИрд╢ рдХреЛрдб рдкреАрдврд╝реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред рд╕рдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕рдорд╛рди рдлрд╝реАрд▓реНрдб рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╢реНрд░реЗрдгреА рдХреА рд╡рд╕реНрддреБрдПрдБ рд╣реИрдВред
- рд╕рдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП, рд╣реИрд╢ рдХреЛрдб рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рд░рд╣реЗрдЧрд╛;

- рдпрджрд┐ рд╡рд╕реНрддреБрдПрдВ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рд╣реИрд╢ рдХреЛрдб рд╕рдорд╛рди рд╣реИрдВ (рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ, рдирд┐рдпрдо 3 рджреЗрдЦреЗрдВ)ред

- рдпрджрд┐ рд╣реИрд╢ рдХреЛрдб рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдЗрдирдкреБрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди (рдЯрдХрд░рд╛рд╡) рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ;

- рдпрджрд┐ рд╣реИрд╢ рдХреЛрдб рдЕрд▓рдЧ рд╣реИрдВ, рддреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ;

рд╕рдорддреБрд▓реНрдпрддрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ред 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);
рд╕рдорддреБрд▓реНрдпрддрд╛ рдФрд░ рд╣реИрд╢ рдХреЛрдб рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣реИрд╢ рдХреЛрдб рдХреА рдЧрдгрдирд╛ рдСрдмреНрдЬреЗрдХреНрдЯ (рдлрд╝реАрд▓реНрдб рдорд╛рди) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдпрджрд┐ рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХреА рджреЛ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕рдорд╛рди рд╕рд╛рдордЧреНрд░реА рд╣реИ, рддреЛ рд╣реИрд╢ рдХреЛрдб рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (
рдирд┐рдпрдо 2 рджреЗрдЦреЗрдВ) ред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ:
object1.equals(object2)
рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ "рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдо
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;

рдЕрдм рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рдХрд┐
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);
рдпрджрд┐ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк
рдкреНрд░рднрд╛рд╡реА рдЬрд╛рд╡рд╛ - рдЬреЛрд╢реБрдЖ рдмрд▓реЛрдЪ , рдЕрдзреНрдпрд╛рдп 3, рдЖрдЗрдЯрдо 8.9 рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдо
рдПрдХ рдХрд╕реНрдЯрдо рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ
hashCode()
рдФрд░
equals()
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╡реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк
Object
рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ
java.util.HashMap
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред HashMap рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реЛрдВрдЧреА, рдХреНрдпреЛрдВрдХрд┐ HashMap рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ
рд╣реИрд╢рдХреЛрдб equals()
рдФрд░
equals()
hashCode()
рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди
tarzan82 рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ
рдореЗрдВ рдЪрд┐рддреНрд░ рдкреЛрд╕реНрдЯ
рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИред
HashMap ред
рд╕рдВрджрд░реНрдн: