StringBuilder > StringBuffer > String
原因分析
String 字符串对象不可变,每次更改都会新分配一个地址存放。
StringBuilder和StringBuffer对象为可变字符,每次更给都是在原基础上更改,速度较快。小量 *** 作不明显,大量执行时速度差距甚大。
public class SpeedTest { public static void main(String[] args) { long startTime = 0L; long endTime = 0L; //StringBuffer类 StringBuffer buffer = new StringBuffer(""); startTime = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { buffer.append(String.valueOf(i)); } endTime = System.currentTimeMillis(); System.out.println("StringBuffer 的执行时间:" + (endTime - startTime)); //StringBuilder类 StringBuilder builder = new StringBuilder(""); startTime = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { builder.append(String.valueOf(i)); } endTime = System.currentTimeMillis(); System.out.println("StringBuilder 的执行时间:" + (endTime - startTime)); //String类 String text = ""; startTime = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { text = text + i; } endTime = System.currentTimeMillis(); System.out.println("String 的执行时间:" + (endTime - startTime)); } }
结果
StringBuffer 的执行时间:22 StringBuilder 的执行时间:9 String 的执行时间:2743结论
如果字符串很少修,使用String
如果字符串存在大量的修改 *** 作,一般使用 StringBuffer 或StringBuilder
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)