黑马程序员技术交流社区

标题: 一直有这样一个疑问,toCharArray()和charAt()哪个效率更高? [打印本页]

作者: 小黑子    时间: 2014-10-18 18:25
标题: 一直有这样一个疑问,toCharArray()和charAt()哪个效率更高?
本帖最后由 小黑子 于 2014-10-20 07:10 编辑

假设有一个String str = "asflasdjfowegnesoafnaslfjaslf";
想对其中的每一个(注:是每一个,不是只取一个)字符取出后判断,
是直接用charAt()取出的效率高,还是先用toCharArray()转化成数组再取出,效率高呢?为什么呢?

作者: 笑脸迷人    时间: 2014-10-19 23:10
区别不是很大;
测试多次,charAt效率略高
测试代码如下
  1. public class Test1 {

  2.         public static void main(String[] args) {
  3.                 new Test1().test();

  4.         }
  5.         public static void toArray(String str){
  6.                 char[] c=str.toCharArray();
  7.                 for(int i=0;i<c.length;i++){
  8.                         if(c[i]=='z'){
  9.                                 System.out.println("ok");
  10.                         }
  11.                         System.out.print(c[i]);
  12.                 }
  13.         }
  14.         public static void charAt(String str){
  15.                 for(int i=0;i<str.length();i++){
  16.                         if(str.charAt(i)=='z'){
  17.                                 System.out.println("ok");
  18.                         }
  19.                         System.out.print(str.charAt(i));
  20.                 }
  21.         }
  22.         @Test
  23.         public void test(){
  24.                 long currentTime1=System.currentTimeMillis();
  25.                 for(int i=0;i<100000;i++){
  26.                         toArray("aaaaa");//和charAt不同的字符串,长度相同即可~
  27.                 }
  28.                 long costTime1=System.currentTimeMillis()-currentTime1;
  29.                
  30.                 long currentTime2=System.currentTimeMillis();
  31.                 for(int i=0;i<100000;i++){
  32.                         charAt("bbbbb");
  33.                 }
  34.                 long costTime2=System.currentTimeMillis()-currentTime2;
  35.                 System.out.println();
  36.                 System.out.println(costTime1);
  37.                 System.out.println(costTime2);
  38.         }
  39.        
  40. }
复制代码




作者: 小黑子    时间: 2014-10-20 07:10
笑脸迷人 发表于 2014-10-19 23:10
区别不是很大;
测试多次,charAt效率略高
测试代码如下

兄台,好个呐,大赞!
作者: 齐宁宁    时间: 2014-10-20 08:52
赞一个!
作者: 依然如故    时间: 2014-10-20 09:22
用时间来衡量不是很准确吧!同一时间可能运行的进程不一样,细微的差别说明不了什么吧!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2