String,StringBuilder和StringBuffer执行同类操作,运行效果对比- public class TestCharacter {
- final static int time = 50000/*100000*/; //循环次数
- public TestCharacter(){
- }
- public void test(String s){
- long begin = System.currentTimeMillis();
- for(int i=0; i<time; i++){
- s += “add”;
- }
- long over = System.currentTimeMillis();
- System.out.println(“操作”+s.getClass().getName()+”类型使用的时间为:”+(over-begin)+”毫秒”);
- }
- public void test(StringBuffer s){
- long begin = System.currentTimeMillis();
- for(int i=0; i<time; i++){
- s.append(“add”);
- }
- long over = System.currentTimeMillis();
- System.out.println(“操作”+s.getClass().getCanonicalName()+”类型使用的时间为:”+(over-begin)+”毫秒”);
- }
- public void test(StringBuilder s){
- long begin = System.currentTimeMillis();
- for(int i=0; i<time; i++){
- s.append(“add”);
- }
- long over = System.currentTimeMillis();
- System.out.println(“操作”+s.getClass().getName()+”类型使用的时间为:”+(over-begin)+”毫秒”);
- }
- /*对 String 直接进行字符串拼接的测试*/
- public void test2(){
- String s2 = “abcd”;
- long begin = System.currentTimeMillis();
- for(int i=0; i<time; i++){
- String s = s2 + s2 +s2;
- }
- long over = System.currentTimeMillis();
- System.out.println(“操作字符串对象引用相加类型使用的时间为:”+(over-begin)+”毫秒”);
- }
- public void test3(){
- long begin = System.currentTimeMillis();
- for(int i=0; i<time; i++){
- String s =”abcd” + “abcd” + “abcd”;
- }
- long over = System.currentTimeMillis();
- System.out.println(“操作字符串相加使用的时间为:”+(over-begin)+”毫秒”);
- }
- public static void main(String[] args){
- String s1 = “abcd”;
- StringBuffer st1 = new StringBuffer(“abcd”);
- StringBuilder st2 = new StringBuilder(“abcd”);
- TestCharacter tc = new TestCharacter();
- tc.test(s1);
- tc.test(st1);
- tc.test(st2);
- tc.test2();
- tc.test3();
- }
- }
复制代码 循环50000次:
操作java.lang.String类型使用的时间为:7280毫秒
操作java.lang.StringBuffer类型使用的时间为:10毫秒
操作java.lang.StringBuilder类型使用的时间为:0毫秒
操作字符串对象引用相加类型使用的时间为:11毫秒
操作字符串相加使用的时间为:0毫秒
循环100000次:
操作java.lang.String类型使用的时间为:36251毫秒
操作java.lang.StringBuffer类型使用的时间为:10毫秒
操作java.lang.StringBuilder类型使用的时间为:0毫秒
操作字符串对象引用相加类型使用的时间为:21毫秒
操作字符串相加使用的时间为:0毫秒
|