String s1 = "a";
String s2 = s1+"b";
String s3 = "a"+"b";
System.out.println(s2=="ab");
System.out.println(s3=="ab");
输出结果为false和true,说明javac编译可以对字符串常量直接相加的表达式进行优化,不必要等到运行期去进行加法运算处理,而是在编译时去掉加号,直接将其编译成这些常量字符窜连接后的结果。
则String s = "a"+"b"+"c"+"d"相当于定义了一个“abcd”的字符串,及上面的代码只创建了一个String对象