码迷,mamicode.com
首页 > 其他好文 > 详细

面试知识点总结

时间:2018-12-24 16:15:24      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:getc   情况   tty   知识   etc   turn   []   知识点   拼接字符串   

1、Java字符串拼接的方式:

(1)用  + 符号:

原理:其实是调用StringBuilder来实现的,”a” + “b”等效于下面的代码片:

String a = "a";  StringBuilder sb = new StringBuilder();  sb.append(a).append("b");  String str = sb.toString();
用“+”号每拼接一次都会新建一个StringBuilder对象,并且最后toString()方法还会生成一个String对象,在循环拼接十万次的时候,
就会生成十万个StringBuilder对象,十万个String对象。

(2)使用String的方法concat:

public String concat(String str) {

int otherLen = str.length(); if (otherLen == 0) { return this;

} int len = value.length;

char buf[] = Arrays.copyOf(value, len + otherLen); str.getChars(buf, len); return new String(buf, true); }

 

(3)使用StringBuilder的append/StringBuffer的append

这两个类实现append的方法都是调用父类AbstractStringBuilder的append方法,
只不过StringBuffer是的append方法加了sychronized关键字,因此是线程安全的

(4)使用使用StringBuffer的append

 

1、循环拼接字符串

StringBulider > StringBuffer >> String.concat > “+”。

在只拼接少量字符串的情况下的时候,他们效率的按快慢排序是
String.concat > StringBulider > StringBuffer > “+”。

从以上分析我们可以得出以下几点结论
1.无论如何直接用“+”号连接字符串都是最慢的
2.在拼接少数字符串(不超过4个)的时候,concat效率是最高的
3.多个字符串拼接的时候,StringBuilder/StringBuffer的效率是碾压的
4.在不需要考虑线程安全问题的时候,使用StringBuilder的效率比StringBuffer更高

面试知识点总结

标签:getc   情况   tty   知识   etc   turn   []   知识点   拼接字符串   

原文地址:https://www.cnblogs.com/wmm1117/p/10168391.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!