[天天一个知识点]15-Java语言-字符串链接

首发csdn,osc延迟更新java


昨天说了字符串拼接,今天来讲说链接,我指的是非数组或集合类型的一堆内容拼一个字符串出来。数组

最简单的是用+运算符,而后还有StringBuilder和StringBuffer。若是是培训学校教的,通常都是说首选使用StringBuilder其次是StringBuffer,不要用+效率很低。实际上在大部分状况下使用+已经足够了,由于+实际上编译以后就是StringBuilder(没有StringBuilder的版本是StringBuffer),并且若是是2个字符串常量相加还能在编译器合并成一个。ui

一种考虑手工建立StringBuilder的场景是在循环次数不少的循环中使用字符串链接,相似于这样:spa

String result = "";  
  
for (int i = 0; i < 1_000_000; ++i) {  
    result += xxx;  
}

在这种场景下,第4行代码在for循环每次循环执行时都会建立一个新的StringBuilder,在循环次数比较多的时候会有显著的效率下降(好比在个人电脑上循环5000次执行时间就有数量级的差距)。这个效率的下降主要来源于+=而非建立StringBuilder对象,因此对于这样:code

for (int i = 0; i < 1_000_000; ++i) {
    String result = xxx + yyy + zzz;
}

则没有必要手工建立StringBuilder。可是当循环次数更加巨大,以致于须要考虑建立对象成本的时候就得考虑在循环外手工建立一个在循环内复用了。不过这种场景对新人来讲应该是没有机会遇到的,不用关心也可。orm

相关文章
相关标签/搜索