рдлрд┐рд░ рд╕реЗ рдирдорд╕реНрдХрд╛рд░ред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рдерд╛, рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдкрд╛рдареНрдпрдХреНрд░рдо
"рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░" рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдореВрд╣ рд╢реБрд░реВ рд╣реЛрдЧрд╛, рд╕реНрдерд╛рдкрд┐рдд рдкрд░рдВрдкрд░рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо рдЖрдкрдХреЗ рд╕рд╛рде рд╡рд┐рд╖рдп рдкрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗред
JDK 9 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЙрдиреНрдлреИрдиреЗрдЯреЗрд╢рди рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдП рд╣реИрдВредJEP 280 (тАЬIndring String ConcatenationтАЭ) рдХреЛ
JDK 9 рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╕рд╛рд░рд╛рдВрд╢ рдЕрдиреБрднрд╛рдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░: тАЬJDK рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП
рдЗрдирд╡реЗрдбреЗрдХреНрдиреЗрдорд┐рдХ рдХреЙрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
javac рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧ
рдХреЙрдиреНрдЯреЗрдХреНрдиреЗрд╢рди рдмрд╛рдЗрдЯрдХреЛрдб рдЕрдиреБрдХреНрд░рдо рдХреЛ
рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИредтАЭ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ
рд╕рдВрдШрдирди рдкрд░ рдЗрд╕рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЗ
рдЬрд╛рд╡рдк рдЙрддреНрдкрд╛рджрди рдкрд░ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ
рдЬреЗрдбреАрдХреЗ 9 рд╕реЗ рдкрд╣рд▓реЗ рдФрд░
рдЬреЗрдбреАрдХреЗ 9 рдХреЗ рдмрд╛рдж
рдЬреЗрдбрдбреАрдХреЗ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ
рд╕рдВрдШрдирди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдкрд╣рд▓реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, "HelloWorldStringConcat" рдирд╛рдордХ рдПрдХ рд╕рд░рд▓ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
package dustin.examples; import static java.lang.System.out; public class HelloWorldStringConcat { public static void main(final String[] arguments) { out.println("Hello, " + arguments[0]); } }
JDK 8
(AdoptOpenJDK) рдФрд░
JKK 11
(Oracle OpenJDK) рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп HelloWorldStringConcat рдХреНрд▓рд╛рд╕ рдХреЗ
main(String)
рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП -verbose javap рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░ рдХреА рддреБрд▓рдирд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рдкреНрд░рдореБрдЦ рдЕрдВрддрд░реЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ред
JDK 8 рдЬрд╛рд╡рдк рдЖрдЙрдЯрдкреБрдЯ Classfile /C:/java/examples/helloWorld/classes/dustin/examples/HelloWorldStringConcat.class Last modified Jan 28, 2019; size 625 bytes MD5 checksum 3e270bafc795b47dbc2d42a41c8956af Compiled from "HelloWorldStringConcat.java" public class dustin.examples.HelloWorldStringConcat minor version: 0 major version: 52 . . . public static void main(java.lang.String[]); descriptor: ([Ljava/lang/String;)V flags: ACC_PUBLIC, ACC_STATIC Code: stack=4, locals=1, args_size=1 0: getstatic #2
JDK 11 javap рдЖрдЙрдЯрдкреБрдЯ Classfile /C:/java/examples/helloWorld/classes/dustin/examples/HelloWorldStringConcat.class Last modified Jan 28, 2019; size 908 bytes MD5 checksum 0e20fe09f6967ba96124abca10d3e36d Compiled from "HelloWorldStringConcat.java" public class dustin.examples.HelloWorldStringConcat minor version: 0 major version: 55 . . . public static void main(java.lang.String[]); descriptor: ([Ljava/lang/String;)V flags: (0x0009) ACC_PUBLIC, ACC_STATIC Code: stack=3, locals=1, args_size=1 0: getstatic #2
JEP 280 рдореЗрдВ "рд╡рд┐рд╡рд░рдг" рдЕрдиреБрднрд╛рдЧ рдЗрд╕ рдЕрдВрддрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ: "рд╡рд┐рдЪрд╛рд░ рдкреВрд░реЗ
invokedynamic
рдиреГрддреНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг
invokedynamic
рдХреЙрд▓ рдХреЗ рд╕рд╛рде
java.lang.invoke.StringConcatFactory рд╣реИ , рдЬреЛ рдЙрди рдореВрд▓реНрдпреЛрдВ рдкрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред" рд╕рдорд╛рди рдЕрдиреБрднрд╛рдЧ рд╕рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдШрдирди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдХреА рд╕рдорд╛рди рддреБрд▓рдирд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
JDK 11 рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рди рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдХреЗрд╡рд▓ JDK 8 рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд▓рд╛рдЗрдиреЗрдВ рдирд╣реАрдВ рд╣реИ; рдЙрд╕рдХреЗ рдкрд╛рд╕ рдХрдо "рдорд╣рдВрдЧреЗ" рдСрдкрд░реЗрд╢рди рднреА рд╣реИрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдПрдХ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдерд╛ "рдЬрд╛рд╡рд╛-рдмрд╛рдп-рдмрд╛рдпреЛрдбреЗрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЙрдиреНрдлреНрд░реЗрдиреЗрд╢рди рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдВрд╡ рд░рдЦрдирд╛" рдФрд░ "рдЬреЗрд╡реИрдХ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдмрд╛рдЗрдЯрдХреЛрдб рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЙрдиреНрд╕реЗрдкреНрдЯреЗрд╢рди рдЕрдиреБрдХреВрд▓рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ред" "
StringBuffer (рдЬреЛ рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ
рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ ) рдФрд░
StringBuilder рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрд╕рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдгрд╛рдо рд╣реИред тАЬрдЧреИрд░-рд▓рдХреНрд╖реНрдптАЭ рдореЗрдВ JEP 280 рдореЗрдВ, рдпрд╣ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ тАЬрд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ / рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд░реНрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирдпрд╛ рдПрдкреАрдЖрдИ рдкреЗрд╢ рди рдХрд░реЗрдВ рдЬреЛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдЕрдиреБрд╡рд╛рдж рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХреЗредтАЭ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╕рд░рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдШрдирди рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд░реНрд╕реНрдЯ рдФрд░ рд╕реНрдЯреНрд░реАрдВрдЧрдмрдлрд╝рд░ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рд╕рдВрдХрд▓рдХ рдХреЛ
рдЬреЗрдИрдкреА 280 рдореЗрдВ рд╢реБрд░реВ рдХреА рдЧрдИ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рд╕реВрдЪрд┐рдпрд╛рдВ рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рддрд╛рд░ рдХреЛ рд╕рдореЗрдЯрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╡реЗ рдХреНрд░рдорд╢рдГ StringBuilder рдФрд░ StringBuffer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм JDK 8 рдФрд░ JDK 11 рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП javap -verbose рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЦреНрдп (рд╕реНрдЯреНрд░рд┐рдВрдЧ []) рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИрдВред
рдЬреЗрдбреАрдХреЗ 8 рдФрд░ рдЬреЗрдбреАрдХреЗ 11 рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд░реНрд▓ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рди рд╣реИ package dustin.examples; import static java.lang.System.out; public class HelloWorldStringBuilder { public static void main(final String[] arguments) { out.println(new StringBuilder().append("Hello, ").append(arguments[0]).toString()); } }
Classfile /C:/java/examples/helloWorld/classes/dustin/examples/HelloWorldStringBuilder.class Last modified Jan 28, 2019; size 627 bytes MD5 checksum e7acc3bf0ff5220ba5142aed7a34070f Compiled from "HelloWorldStringBuilder.java" public class dustin.examples.HelloWorldStringBuilder minor version: 0 major version: 52 . . . public static void main(java.lang.String[]); descriptor: ([Ljava/lang/String;)V flags: ACC_PUBLIC, ACC_STATIC Code: stack=4, locals=1, args_size=1 0: getstatic #2
Classfile /C:/java/examples/helloWorld/classes/dustin/examples/HelloWorldStringBuilder.class Last modified Jan 28, 2019; size 627 bytes MD5 checksum d04ee3735ce98eb6237885fac86620b4 Compiled from "HelloWorldStringBuilder.java" public class dustin.examples.HelloWorldStringBuilder minor version: 0 major version: 55 . . . public static void main(java.lang.String[]); descriptor: ([Ljava/lang/String;)V flags: (0x0009) ACC_PUBLIC, ACC_STATIC Code: stack=4, locals=1, args_size=1 0: getstatic #2
рдЬреЗрдбреАрдХреЗ 8 рдФрд░ рдЬреЗрдбреАрдХреЗ 11 рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд░реНрдЧрд░ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рди рд╣реИ package dustin.examples; import static java.lang.System.out; public class HelloWorldStringBuffer { public static void main(final String[] arguments) { out.println(new StringBuffer().append("Hello, ").append(arguments[0]).toString()); } }
Classfile /C:/java/examples/helloWorld/classes/dustin/examples/HelloWorldStringBuffer.class Last modified Jan 28, 2019; size 623 bytes MD5 checksum fdfb90497db6a3494289f2866b9a3a8b Compiled from "HelloWorldStringBuffer.java" public class dustin.examples.HelloWorldStringBuffer minor version: 0 major version: 52 . . . public static void main(java.lang.String[]); descriptor: ([Ljava/lang/String;)V flags: ACC_PUBLIC, ACC_STATIC Code: stack=4, locals=1, args_size=1 0: getstatic #2
Classfile /C:/java/examples/helloWorld/classes/dustin/examples/HelloWorldStringBuffer.class Last modified Jan 28, 2019; size 623 bytes MD5 checksum e4a83b6bb799fd5478a65bc43e9af437 Compiled from "HelloWorldStringBuffer.java" public class dustin.examples.HelloWorldStringBuffer minor version: 0 major version: 55 . . . public static void main(java.lang.String[]); descriptor: ([Ljava/lang/String;)V flags: (0x0009) ACC_PUBLIC, ACC_STATIC Code: stack=4, locals=1, args_size=1 0: getstatic #2
JDK 8 рдФрд░ JDK 11 рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд▓реВрдкрд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЙрдиреНрдЯреИрдХреНрд╢рдВрд╕JEP 280 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ, рдореИрдВ рдирдореВрдирд╛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдХреБрдЫ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛ рдФрд░ рд▓реВрдк рдореЗрдВ рдХрдВрдХреНрд░реАрдЯрд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдШрд░ рдкрд░ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗрдВред
package dustin.examples; import static java.lang.System.out; public class HelloWorldStringConcatComplex { public static void main(final String[] arguments) { String message = "Hello"; for (int i=0; i<25; i++) { message += i; } out.println(message); } }
Classfile /C:/java/examples/helloWorld/classes/dustin/examples/HelloWorldStringConcatComplex.class Last modified Jan 30, 2019; size 766 bytes MD5 checksum 772c4a283c812d49451b5b756aef55f1 Compiled from "HelloWorldStringConcatComplex.java" public class dustin.examples.HelloWorldStringConcatComplex minor version: 0 major version: 52 . . . public static void main(java.lang.String[]); descriptor: ([Ljava/lang/String;)V flags: ACC_PUBLIC, ACC_STATIC Code: stack=2, locals=3, args_size=1 0: ldc #2
Classfile /C:/java/examples/helloWorld/classes/dustin/examples/HelloWorldStringConcatComplex.class Last modified Jan 30, 2019; size 1018 bytes MD5 checksum 967fef3e7625965ef060a831edb2a874 Compiled from "HelloWorldStringConcatComplex.java" public class dustin.examples.HelloWorldStringConcatComplex minor version: 0 major version: 55 . . . public static void main(java.lang.String[]); descriptor: ([Ljava/lang/String;)V flags: (0x0009) ACC_PUBLIC, ACC_STATIC Code: stack=2, locals=3, args_size=1 0: ldc #2
рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ
"рдПрдирдл рдЬрд╛рд╡рд╛.рд▓рдВрдЧ.рдЯреНрд░реАрдВрдЧ рдЯреВ рд╣реИрдВрдЧ рдпреЛрд░рд╕реЗрд▓реНрдл ..." , рдбреЙред
рд╣реЗрдВрдЬ рдПрдо рдХрд╛рдмреБрддреНрдЬрд╝ рдФрд░
рджрд┐рдорд┐рддреНрд░реА рд╡реНрдпрд╛рдЬрд╝реЗрд▓реЗрдВрдХреЛ рдиреЗ рдЬрд╛рд╡рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд┐рдП рдЧрдП рдмрджрд▓рд╛рд╡реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╣рд╛, "+ рдЕрдзрд┐рдХ StringBuilder рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ тАЭред рдЖрдЬ рдХреА рд╕реНрд▓рд╛рдЗрдб рд╕реЗ рд╕рдмрдХ рдкрд░, рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ: "рдЬрд╣рд╛рдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрднрд╡ рд╣реЛ рдЙрд╕рдХреЗ рдмрдЬрд╛рдп + рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ" рдФрд░ "рдЬрд╛рд╡рд╛ 9+ рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрдХреНрд╖рд╛рдПрдВред"
JEP 280 рдХреЗ рд╕рд╛рде JDK 9 рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди, "рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЙрдиреНрдХреИрдЯреАрдиреИрд╢рди рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдмрд┐рдирд╛ javac рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП bytecode рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗред" рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдпрд╣ рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИ рдереА рдХрд┐ JEP 348 ("JDK APIs рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрдВрдЯреНрд░рд┐рдВрд╕рд┐рдХреНрд╕") рдЕрдм JEP рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рд▓рдХреНрд╖реНрдп
рд╕реНрдЯреНрд░рд┐рдВрдЧ :: рдкреНрд░рд╛рд░реВрдк рдФрд░
Objects::hash
рддрд░реАрдХреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдПрдХ рдЙрдкрдпреЛрдЧреА рд▓реЗрдЦ рд╣реИ? рд╣рдо рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдХреЛ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ
рдЦреБрд▓реЗ рджрд┐рди рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЗ
рд╣реИрдВ , рдЬреЛ 25 рдорд╛рд░реНрдЪ рдХреЛ рдУрдЯреАрдпреВрдПрд╕ рдХреЗ рдорд╣рд╛рдирд┐рджреЗрд╢рдХ -
рд╡рд┐рдЯрд╛рд▓реА рдЪрд┐рдмреНрд░реАрдХреЛрд╡ рджреНрд╡рд╛рд░рд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред