рдЬрд╛рд╡рд╛ рдЪреИрд▓реЗрдВрдЬрд░реНрд╕ # 2: рд╕реНрдЯреНрд░рд┐рдВрдЧ рддреБрд▓рдирд╛

рдЬрд╛рд╡рд╛ рдЪреИрд▓реЗрдВрдЬрд░реНрд╕ # 2: рд╕реНрдЯреНрд░рд┐рдВрдЧ рддреБрд▓рдирд╛


рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рджреЗрд░ рд╣реЛ рдЪреБрдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд▓ рд╣реА рдирдП рдзрд╛рдЧреЗ "рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░" рдХреЗ рдмреАрдЪ рдПрдХ рджреВрд╕рд░рд╛ рдкрд╛рда рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдРрд╕рд╛ рд╣реИ, рдЬреАрд╡рди рдореЗрдВ рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ, рд▓реЗрдХрд┐рди рдЕрдм рддрдХ рд╣рдо рдЬрд╛рд╡рд╛ рдЪреИрд▓реЗрдВрдЬрд░реНрд╕ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдкрдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдЬрд╛рд╡рд╛ рдореЗрдВ, String рд╡рд░реНрдЧ рдПрдХ char рд╕рд░рдгреА ( рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ - рдЬрд╛рд╡рд╛ 9 рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ byte рд╕рд░рдгреА рд╣реИ, рдЬрд╛рд╡рд╛ 9 рдореЗрдВ рдХреЙрдореНрдкреИрдХреНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рджреЗрдЦреЗрдВ ) рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ ред рд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ, String рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдг рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рдмреНрджреЛрдВ, рд╡рд╛рдХреНрдпреЛрдВ рдпрд╛ рдЕрдиреНрдп рд░рдЪрдирд╛рдУрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


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



рдЬрдм рдЖрдк рдЬрд╛рд╡рд╛ рдореЗрдВ String рд╡рд░реНрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ char рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


 public String(char value[]) { this(value, 0, value.length, null); } 

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


рдЬрд╛рд╡рд╛ рдЪреИрд▓реЗрдВрдЬрд░реНрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╡рд┐рдзрд┐ рдЕрдзрд┐рднрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ String рд╡рд░реНрдЧ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдЖрдкрдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдЪреАрд▓рд╛ рдмрдирд╛ рд╕рдХрддреА рд╣реИ:


 public String(String original) {} public String(char value[], int offset, int count) {} public String(int[] codePoints, int offset, int count) {} public String(byte bytes[], int offset, int length, String charsetName) {} //    ... 

String рдХреНрд▓рд╛рд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреВрд▓ рдХреНрдпрд╛ рд╣реИ?


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


рддрд╛рд░-рдЗрди-рдж-рд╕реНрдЯреНрд░рд┐рдВрдЧ-рдкреВрд▓


рдПрдХ рдкрдВрдХреНрддрд┐ рдкреВрд▓ рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ


рдпрджреНрдпрдкрд┐ рд╣рдордиреЗ Duke рдФрд░ Juggy рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ String рдЪрд░ рдмрдирд╛рдП, рдХреЗрд╡рд▓ рджреЛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ рдФрд░ рдбрд╛рдпрдиреЗрдорд┐рдХ рдореЗрдореЛрд░реА (рдвреЗрд░) рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдкреНрд░рдорд╛рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред (рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ, " == " рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЛ рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдФрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рд╡рд╕реНрддреБ рд╕рдорд╛рди рд╣реИ рдпрд╛ рдирд╣реАрдВред)


 String juggy = "Juggy"; String anotherJuggy = "Juggy"; System.out.println(juggy == anotherJuggy); 

рдпрд╣ рдХреЛрдб true рд╡рд╛рдкрд╕ рдЖрдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ String рдореЗрдВ рджреЛ String рд╡реИрд░рд┐рдПрдмрд▓ рдПрдХ рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдЕрд░реНрде рд╕рдорд╛рди рд╣реИрдВред


рдЕрдкрд╡рд╛рдж new рдСрдкрд░реЗрдЯрд░ рд╣реИред


рдЕрдм рдЗрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ - рдпрд╣ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдВрддрд░ рд╣реИред


 String duke = new String("duke"); String anotherDuke = new String("duke"); System.out.println(duke == anotherDuke); 

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


рджреЗрд╢реА рддрд░реАрдХреЗ

рдЬрд╛рд╡рд╛ рдореЗрдВ рдореВрд▓ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╡реЗ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рд╕реА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЬрд╛рдПрдВрдЧреА, рдЖрдорддреМрд░ рдкрд░ рд╕реНрдореГрддрд┐ рдХреЗ рдкреНрд░рдмрдВрдзрди рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рдеред

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреВрд▓ рдФрд░ intern() рд╡рд┐рдзрд┐


рдПрдХ рдкреВрд▓ рдореЗрдВ рддрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдВрдЯрд░реНрдирд┐рдВрдЧ рдирд╛рдордХ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдпрд╣рд╛рдБ рдЬрд╛рд╡рджреЛрдХ рдиреЗ рд╣рдореЗрдВ intern() рдкрджреНрдзрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рд╣реИ:


  /** *      . * *   ( )   {@code String}. * *    intern,     , *    {@code String},   *  {@link #equals(Object)},     . * ,   {@code String}   *        {@code String}. * *   ,      {@code s}  {@code t}, * {@code s.intern() == t.intern()}  {@code true} *    ,  {@code s.equals(t)}  {@code true}. * *       . *      3.10.5 The Java™ Language Specification. * * @returns ,         , * , ,       . * * @jls 3.10.5 String Literals */ public native String intern(); 

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреВрд▓ рдореЗрдВ рддрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП intern() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкреВрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдПрдХ рдкрдВрдХреНрддрд┐ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдкреВрд▓ рдореЗрдВ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдмрдирд╛рддрд╛ рд╣реИред рд░реЛ рдкреВрд▓ рддрд░реНрдХ рдлреНрд▓рд╛рдИрд╡реЗрдЯ рдкреИрдЯрд░реНрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред


рдЕрдм, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм рд╣рдо рджреЛ рд▓рд╛рдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП new рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ,


 String duke = new String("duke"); String duke2 = new String("duke"); System.out.println(duke == duke2); //    false System.out.println(duke.intern() == duke2.intern()); //    true 

new рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рддреБрд▓рдирд╛ true рд╣реЛрдЧреАред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ intern() рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреВрд▓ рдореЗрдВ рд╣реИред


String рдХрдХреНрд╖рд╛ рдореЗрдВ equals рдкрджреНрдзрддрд┐


equals() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рджреЛ рд╡рд░реНрдЧ рд╕рдорд╛рди рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдЪреВрдВрдХрд┐ equals() Object рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рд╕ рдХреЛ рдпрд╣ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП equals() рдкрджреНрдзрддрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреЗрд╢рдХ, String рдУрд╡рд░рд░рд╛рдЗрдбреНрд╕ рдХреЗ equals() ред


рдПрдХ рдмрд╛рд░ рджреЗрдЦ рд▓реЛ:


 public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String aString = (String)anObject; if (coder() == aString.coder()) { return isLatin1() ? StringLatin1.equals(value, aString.value) : StringUTF16.equals(value, aString.value); } } return false; } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, String рд╡рд░реНрдЧ рдХреЗ рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ equals() рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА equals() , рди рдХрд┐ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдЕрд▓рдЧ рд╣реИрдВ; рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред


рд╕рд╛рдорд╛рдиреНрдп String рддрд░реАрдХреЗ


рд╕реНрдЯреНрд░рд┐рдВрдЧ рддреБрд▓рдирд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдмрд╛рдд рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред


String рд╡рд░реНрдЧ рдХреЗ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


 //         trim() //     substring(int beginIndex, int endIndex) //    length() //  ,     replaceAll(String regex, String replacement) // ,     CharSequence   contains(CharSequences) 

рд╕реНрдЯреНрд░рд┐рдВрдЧ рддреБрд▓рдирд╛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдВ


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдПрдХ рдЫреЛрдЯреА рд╕реА рдкрд╣реЗрд▓реА рдХреЛ рд╣рд▓ рдХрд░рдХреЗ String рдХрдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реАрдЦрд╛ред


рдЗрд╕ рдХрд╛рд░реНрдп рдореЗрдВ, рдЖрдкрдиреЗ рдЬрд┐рди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕реАрдЦрд╛ рд╣реИ, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХреНрдпрд╛ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ result рдХрд╛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?


 public class ComparisonStringChallenge { public static void main(String... doYourBest) { String result = ""; result += " powerfulCode ".trim() == "powerfulCode" ? "0" : "1"; result += "flexibleCode" == "flexibleCode" ? "2" : "3"; result += new String("doYourBest") == new String("doYourBest") ? "4" : "5"; result += new String("noBugsProject") .equals("noBugsProject") ? "6" : "7"; result += new String("breakYourLimits").intern() == new String("breakYourLimits").intern() ? "8" : "9"; System.out.println(result); } } 

рдирд┐рд╖реНрдХрд░реНрд╖ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?


  • A: 02468
  • B: 12469
  • C: 12579
  • рдбреА: 12568

рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рд╣реА рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдЕрдм рдХреНрдпрд╛ рд╣реБрдЖ? String рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдордЭрдирд╛


рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:


 result += " powerfulCode ".trim() == "powerfulCode" ? "0" : "1"; 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо false , рдХреНрдпреЛрдВрдХрд┐ рдЬрдм trim() рд╡рд┐рдзрд┐ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИ, рддреЛ рдпрд╣ new рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ String рдмрдирд╛рддрд╛ рд╣реИред


рдЖрдЧреЗ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:


 result += "flexibleCode" == "flexibleCode" ? "2" : "3"; 

рдпрд╣рд╛рдВ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ; рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкрдВрдХреНрддрд┐ рдкреВрд▓ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВред рдпрд╣ рддреБрд▓рдирд╛ true ред


рдлрд┐рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ:


 result += new String("doYourBest") == new String("doYourBest") ? "4" : "5"; 

рджреЛ рдирдИ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП new рд▓реАрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЙрдирдХреЗ рдореВрд▓реНрдп рд╕рдорд╛рди рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рдореВрд▓реНрдп рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рднреА рддреБрд▓рдирд╛ false рд╣реЛрдЧреАред


рдЕрдЧрд▓рд╛:


 result += new String("noBugsProject") .equals("noBugsProject") ? "6" : "7"; 

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


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╡рд╕реНрддреБрдУрдВ рдпрд╛ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдирддреАрдЬрд╛ true ред


рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ:


 result += new String("breakYourLimits").intern() == new String("breakYourLimits").intern() ? "8" : "9"; 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рджреЗрдЦрд╛, intern() рд╡рд┐рдзрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреВрд▓ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбрд╛рд▓рддреА рд╣реИред рджреЛрдиреЛрдВ рд▓рд╛рдЗрдиреЗрдВ рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ true ред


рдЖрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпрд╛рдБ


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


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


рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг:


 System.out.println("duke".trim() == "duke".trim()); 

рдпрд╣ рддреБрд▓рдирд╛ рд╕рд╣реА рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ trim() рд╡рд┐рдзрд┐ рдПрдХ рдирдИ рд░реЗрдЦрд╛ рдирд╣реАрдВ рдмрдирд╛рддреА рд╣реИред


 System.out.println(" duke".trim() == "duke".trim()); 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╣рд▓реА trim() рд╡рд┐рдзрд┐ рдПрдХ рдирдИ рд▓рд╛рдЗрди рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдзрд┐ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░реЗрдЧреА рдФрд░ рдЗрд╕рд▓рд┐рдП рд▓рд┐рдВрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдВрдЧреЗред


рдЕрдВрдд рдореЗрдВ, рдЬрдм trim() рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдирдИ рд▓рд╛рдЗрди рдмрдирд╛рддрд╛ рд╣реИ:


 //   trim   String new String(Arrays.copyOfRange(val, index, index + len), LATIN1); 

рддрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдпрд╛рдж рд░рдЦрдирд╛


  • рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЖрдкрд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрдВрдХреНрддрд┐ рдЕрд╡рд╕реНрдерд╛ рдХреЛ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред


  • рдореЗрдореЛрд░реА рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, JVM рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреВрд▓ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдирдИ рд▓рд╛рдЗрди рдмрдирд╛рддреЗ рд╕рдордп, JVM рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЕрдкрдиреА рд╡реИрд▓реНрдпреВ рдФрд░ рдкреЙрдЗрдВрдЯреНрд╕ рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдкреВрд▓ рдореЗрдВ рдЗрд╕ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ JVM рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдмрдирд╛рддрд╛ рд╣реИред


  • рдСрдкрд░реЗрдЯрд░ " == " рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрднреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред equals() рд╡рд┐рдзрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреА рд╣реИред рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдПрдХ рд╣реА рдирд┐рдпрдо рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ред


  • new рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдвреЗрд░ рдореЗрдВ рдПрдХ рдирдИ рд▓рд╛рдЗрди рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА (рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ - рдпрд╣ рдореВрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд▓ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж zagayevskiy ), рднрд▓реЗ рд╣реА рдПрдХ рд╣реА рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рд░реЗрдЦрд╛ рд╣реЛред



рдЬрд╡рд╛рдм рд╣реИ


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЙрддреНрддрд░ рдбреА рд╣реИред рдирд┐рд╖реНрдХрд░реНрд╖ 12568 рд╣реЛрдЧрд╛ред


рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ...

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


All Articles