String拼接字符串效率低,你知道原因吗?
为什么String用"+"拼接字符串效率低下,最好能从JVM角度谈谈吗? 对于这个问题,我们先来看看如下代码: public class StringTest { public static void main ( String [ ] args ) { String a = "abc" ; String b = "def" ; String c = a + b ; String d = "abc" + "def" ; System.out.Println ( c ) ; System.out.Println ( d ) ; } } 打印结果: abcdef abcdef 从上面代码示例中,我们看到两种方式拼接的字符串打印的结果是一样的。但这只是表面上的,实际内部运行不一样。 两者究竟有什么不一样? String c = a + b; "+"相当于new了一个StringBuilder,然后调用StringBuilder的初始化方法,然后进行append操作,最后toString(); String d = “abc” + “def”; 两个常量在同行发生时,JVM在编译时就认为这个“+”是没有用处的,编译时直接变成String d = “abcdef”; 那么效率问题从何说起? 其实上面两个例子,连接字符串行表达式很简单,那么"+"和StringBuilder基本是一样的