在Java中 “+” 为字符串连接符,顾名思义是用来进行字符串的连接使用,“+” 字符串连接符使用简介如下:

1、“+” 连接字符的过程:会创建StringBuilder对象和String对象,使用StringBuilder.append()方法从左到右依次添加字符串到StringBuilder中,最后调用 .toString() 方法返回字符串对象String,具体分为如下两种情况:

    1)、“+” 连接的字符串不包括new关键字创建的字符串时:例如:String a = "aa" + "bb" + ' c ' + 2 + d + "e",过程:String str1 = new StringBuilder("aabb").append(c).append(2).append(d).append(d).toString();//该过程中StringBulider有被字符串初始化;
    2)、 “+” 连接的字符串包括new关键字创建的字符串时:例如:String a = "aa" + "bb" + new String("hh") + ' c ' + 2 + d + "e",过程:String str1 = new StringBuilder().append(aa).append(bb).append(hh).append(c).append(2).append(d).append(d).toString();//该过程中StringBulider没有被字符串初始化;

2、“+” 连接字符连接字符时编译时优化问题详解:
         1)、“+”连接字符中只有常量(字符串常量,字符常量,基本数据类型(int ,long等))时,会有编译时优化;
         2)、“+” 连接字符的过程有new方式创建 String类型字符串时,没有编译时优化;
            例如:
                 String a = "abc";      final String a1 = "aa";
                 String b = "de";        final String b1 = "bb";
                 String c = "abcde";  String d = "aabb"; 
                 String c1 = "ab" + "de";    String c2 = a + b ;  String d1 = "aa" + "bb";    String d2 = a1 + b1;  则:
                 c == c1//true,编译时优化
                 c == c2//false,没有编译时优化
                 d== d3//true,编译时优化
                 d== d4//true,编译时优化 注:final关键字对a1,b1引用的修饰作用。