在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引用的修饰作用。