java 字符串连接



java 字符串连接

java字符串连接一般有三种方式:+ StringBuilder StringBuffer。
StringBuffer是线程安全的;
StringBuilder不是线程安全的,但性能稍好一些,在不需要线程安全的字符串连接,尽量使用StringBuilder。(大部分情况下都不需要线程安全)jdk1.5的编译器也是把+号编译成StringBuilder来连接字符串的。
+号比想象中的智能,通过反编译发现,在某些情况下可以放心的使用+号连接字符串。
1、对于很长的字符串可以分开用+号连接,不会影响性能。 如:

Java代码 复制代码 收藏代码
  1. String s = “aa” + “bb”;
String s = "aa" + "bb";

编译器会自动处理成:

Java代码 复制代码 收藏代码
  1. String s = “aabb”;
String s = "aabb";

2、一条语句中,可以放心使用+号连接,不会影响性能。 如:

Java代码 复制代码 收藏代码
  1. String a = “a” + “a”;
  2. String s = “a” + “b” + a + “c” + 5 +”d”;


String a = "a" + "a";
String s = "a" + "b" + a + "c" + 5 +"d";

编译器自动处理成:

Java代码 复制代码 收藏代码
  1. String a  =”aa”;
  2. String s = new StringBuilder(“ab”).append(a).append(“c”).append(5).append(“d”).toString();
String a  ="aa";
String s = new StringBuilder("ab").append(a).append("c").append(5).append("d").toString();

但是,这样的情况使用+连接字符串的性能是极低的。

Java代码 复制代码 收藏代码
  1. String s = “”;
  2. for(int i=0;i<10000;i++){
  3.     s+=”a”;
  4. }
String s = ""; 
for(int i=0;i<10000;i++){
    s+="a";
}

应该使用:

Java代码 复制代码 收藏代码
  1. StringBuilder sb = new StringBuilder();
  2. for(int i=0;i<10000;i++){
  3.     sb.append(“a”);
  4. }