字符串拼接操作(创建了几个对象?
)
-
String a = "hello" + "world";
-
final String a = "hello"; String b = a + "world";
-
String a = "hello"; String b = a + "world";
一:方式一分析及验证
二:方式二分析及验证
三:方式三分析及验证
含有变量的字符串在拼接时,根据JDK版本不同,底层实现也相应不同;
四:面试题
注意
:JDK9及之后现不做分析(~)
package xyz.xx.chapter1;
/**
* 面试题
* 问:分析下面程序结果并作出合理解释
*
* JDK6 -> false -> invokespecial #7 <java/lang/StringBuilder.append>
* JDK7 -> true -> invokevirtual #7 <java/lang/StringBuilder.append>
* JDK8 -> true -> invokevirtual #7 <java/lang/StringBuilder.append>
* JDK9 -> true -> invokedynamic #16 <makeConcatWithConstants, BootstrapMethods #0>
* JDK11 -> true -> invokedynamic #16 <makeConcatWithConstants, BootstrapMethods #0>
* JDK14 -> true -> invokedynamic #16 <makeConcatWithConstants, BootstrapMethods #0>
*/
public class StringTest5 {
public static void main