首先给杨同学说声不好意思,本来已经在http://bbs.itheima.com/thread-34699-1-1.html你的帖子里回复了,
之所以还要来这里说,是因为看见很多同学都是说的第三种方式(StringBuffer)效率最高,而第一种累加效率最低,因为第一种会生成1001个对象,所以会很慢。
在这来新开个帖子给大家说明下,希望对大家有帮助。
个人见解肯定是第一种效率最高,因为java编译器对字符串常量直接相加的表达式进行优化,在编译的时候就去掉了加号。
经过实验代码看也是第一种效率最高。我们同时累加的100000 的运行结果对比分别是5:18、7:19、8:22、6:15、6:24可以看见差距还是蛮大的。由于代码篇幅太大我就发了一点上来,在做10000累加的时候我用了笨方法,每行20个串相加,然后复制了5000行就是100000个字符串相加。然后再运行结果。
以上是我自己的一点见解,希望对大家有帮助,如果哪里有错,也希望大家多多指点。- +"1"+"2"+"3333333333333333333333"+"4"+"5"+"6"+"7"+"8333333333333333333"+"9"+"10"+"11"+"1233333333333333333333333333333333"+"13"+"14"+"15"+"16"+"17"+"18"+"19"+"20"
- +"1"+"2"+"3333333333333333333333"+"4"+"5"+"6"+"7"+"8333333333333333333"+"9"+"10"+"11"+"1233333333333333333333333333333333"+"13"+"14"+"15"+"16"+"17"+"18"+"19"+"20"
- +"1"+"2"+"3333333333333333333333"+"4"+"5"+"6"+"7"+"8333333333333333333"+"9"+"10"+"11"+"1233333333333333333333333333333333"+"13"+"14"+"15"+"16"+"17"+"18"+"19"+"20"
- +"1"+"2"+"3333333333333333333333"+"4"+"5"+"6"+"7"+"8333333333333333333"+"9"+"10"+"11"+"1233333333333333333333333333333333"+"13"+"14"+"15"+"16"+"17"+"18"+"19"+"20"
- ;
- System.out.println(System.currentTimeMillis()-start);
-
- StringBuffer sb = new StringBuffer();
- Long s1 = System.currentTimeMillis();
- for(int i=0;i<100000;i++){
- sb.append(i);
- }
- System.out.println(System.currentTimeMillis()-s1);
复制代码 |