先看一段代码
说明对于 静态字符串的连接操作,java在编译的时候进行了优化,将这些连接操作直接合并成一个字符串
String r1 = "String" + "String" + "aaa";
StringBuilder sb = new StringBuilder();
sb.append("String");
sb.append("String");
sb.append("aaa");
从理论上讲,r1字符串的代码效率并不高,因为产生了新的对象“StringString”,"StringStringaaa"。
但通过对编译后的class文件反编译发现,反编译的结果是
String r1 = "StringStringaaa";
StringBuilder sb = new StringBuilder();
sb.append("String");
sb.append("String");
sb.append("aaa");
说明对于 静态字符串的连接操作,java在编译的时候进行了优化,将这些连接操作直接合并成一个字符串