如果程序对附加字符串的需求很频繁,不建议使用+来进行字符串的串联。可以考虑使用java.lang.
StringBuilder
类,使用这个类所产生的对象默认会有16个字符的长度,您也可以自行指定初始长度。如果附加的字符超出可容纳的长度,则
StringBuilder
对象会自动增加长度以容纳被附加的字符。如果有频繁作字符串附加的需求,使用
StringBuilder
类能使效率大大提高。如下代码:
- public
class
AppendStringTest
- {
- public
static
void
main(String[] args)
- {
- String text = ""
;
-
- long
beginTime = System.currentTimeMillis();
- for
(
int
i=
0
;i<
10000
;i++)
- text = text + i;
- long
endTime = System.currentTimeMillis();
- System.out.println("执行时间:"
+(endTime-beginTime));
-
- StringBuilder
sb = new
StringBuilder
(
""
);
- beginTime = System.currentTimeMillis();
- for
(
int
i=
0
;i<
10000
;i++)
- sb.append(String.valueOf(i));
- endTime = System.currentTimeMillis();
- System.out.println("执行时间:"
+(endTime-beginTime));
-
- }
- }
public class AppendStringTest
{
public static void main(String[] args)
{
String text = "";
long beginTime = System.currentTimeMillis();
for(int i=0;i<10000;i++)
text = text + i;
long endTime = System.currentTimeMillis();
System.out.println("执行时间:"+(endTime-beginTime));
StringBuilder
sb = new StringBuilder
("");
beginTime = System.currentTimeMillis();
for(int i=0;i<10000;i++)
sb.append(String.valueOf(i));
endTime = System.currentTimeMillis();
System.out.println("执行时间:"+(endTime-beginTime));
}
}
此段代码输出:
执行时间:3188
执行时间:15
StringBuilder
是j2se1.5.0才新增的类,在此之前的版本若有相同的需求,则使用java.util.StringBuffer。事实上StringBuilder
被设计为与StringBuffer具有相同的操作接口。在单机非线程(MultiThread)的情况下使用StringBuilder
会有较好的效率,因为StringBuilder
没有处理同步的问题。StringBuffer则会处理同步问题,如果StringBuilder
会有多线程下被操作,则要改用StringBuffer,让对象自行管理同步问题。