面试官:请你谈谈String
、StringBuilder
、StringBuffer
区别
作为经典Java八股,是面试必考的热门点。
下面让我们一起来看一下他们的区别吧!
主要是测试他们的效率和应用场景,具体语法不在此展开。
看完这篇文章和面试官对答如流!
后续会从底层源码剖析区别,喜欢的小伙伴关注一下!
/**
* @author 寸铁
* @version 1.0
**/
public class StringVsStringBuilderVsStringBuffer {
public static void main(String[] args) {
long startTime = 0L;
long endTime = 0L;
StringBuffer buffer = new StringBuffer();
//测试数据(可多组测试,对比处理结果)
int n = 100000;
//StringBuffer的测试时间
startTime = System.currentTimeMillis();
for(int i = 0; i < n; i++){
buffer.append(String.valueOf(i));
}
endTime = System.currentTimeMillis();
System.out.println("StringBuffer的执行时间:" + (endTime - startTime));
StringBuilder builder = new StringBuilder();
//StringBuilder的测试时间
startTime = System.currentTimeMillis();
for(int i = 0; i < n; i++){
builder.append(String.valueOf(i));
}
endTime = System.currentTimeMillis();
System.out.println("StringBuilder的执行时间:" + (endTime - startTime));
String text = "";
//String的测试时间
startTime = System.currentTimeMillis();
for(int i = 0; i < n; i++){
text += i;
}
endTime = System.currentTimeMillis();
System.out.println("String的执行时间:" + (endTime - startTime));
}
}
处理效率:StringBuilder>StringBuffer>String
并且随着处理数据的增大,处理效率差距越来越大!!!
StringBuffer
或StringBuilder
StringBuilder
StringBuffer
String
,如配置信息。(底层实际上是对常量池字符串的引用)喜欢的小伙伴点点关注!