WEB开发网
开发学院软件开发Java Java高效运行必备:如何选择使用String、StringBu... 阅读

Java高效运行必备:如何选择使用String、StringBuffer与StringBuilde

 2009-09-09 00:00:00 来源:WEB开发网   
核心提示:字符串String是Java编程中使用概率最高的变量,也许你觉得没有什么可讲的,Java高效运行必备:如何选择使用String、StringBuffer与StringBuilde,随手拈来,然而字符串的处理却尤其需要我们的关注,然而实际情况是,它们在不同的情况下各有选择的优势,因为大量的字符串实例的随意创建,给系统的效

字符串String是Java编程中使用概率最高的变量,也许你觉得没有什么可讲的,随手拈来,然而字符串的处理却尤其需要我们的关注,因为大量的字符串实例的随意创建,给系统的效率带来了很大的问题。

比如下面我们来做一个测试,对比String类和StringBuffer的执行效率:

● String执行10000次累加

long start = System.currentTimeMillis();
String str = "";
for (int i = 0; i < 10000; i++) {
    str += "," + i;
}
long end = System.currentTimeMillis();
System.out.println(end - start);

执行的结果花费了702ms。

● 使用StringBuffer类来代替String类:

long start = System.currentTimeMillis();
StringBuffer str = new StringBuffer();
for (int i = 0; i < 10000; i++) {
    str.append(",").append(i);
}
long end = System.currentTimeMillis();
System.out.println(end - start);

运行共花费了0ms。

通过对比发现StringBuffer几乎不花费时间。这是因为,String对象的每一次累加,都会先将累加的字符串创建一个实例对象然后再累加,等于是创建了10000个实例。而StringBuffer每次都是修改的原有实例对象,只是创建了1个实例。通过学习第2章我们已经知道,创建实例需要申请内存地址、写入数据的过程,大量的这种操作就会消耗大量的CPU计算资源。

也许你会说,StringBuffer这么高效率,那我们不再使用String类就可以了,然而实际情况是,它们在不同的情况下各有选择的优势。通过《高手真经 Java核心编程技术》第11.2节的讲解可知,String、StringBuffer与StringBuilder三者最大的区别是:

1 2 3  下一页

Tags:Java 高效 运行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接