A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小黑子 于 2014-10-20 07:10 编辑

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

4 个回复

倒序浏览
区别不是很大;
测试多次,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-19 23:10
区别不是很大;
测试多次,charAt效率略高
测试代码如下

兄台,好个呐,大赞!
回复 使用道具 举报
赞一个!
回复 使用道具 举报
用时间来衡量不是很准确吧!同一时间可能运行的进程不一样,细微的差别说明不了什么吧!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马