StringTokenizer最快 ,基本已经不用了,除非在某些需要效率的场合。
Scanner最慢。 
String和Pattern速度差不多。Pattern稍快些。 String和Pattern的split 方法效率相当,常用

  1. public   static   void  main(String [] args){
  2. long  start = System.currentTimeMillis();
  3. for ( int  i= 0 ;i< 100000 ;i++){
  4. test1();
  5. }
  6. long  end = System.currentTimeMillis();
  7. System.out.println("StringTokenzier: " +(end-start));
  8. start = System.currentTimeMillis();
  9. for ( int  i= 0 ;i< 100000 ;i++){
  10. test2();
  11. }
  12. end = System.currentTimeMillis();
  13. System.out.println("Scanner: " +(end-start));
  14. start = System.currentTimeMillis();
  15. for ( int  i= 0 ;i< 100000 ;i++){
  16. test3();
  17. }
  18. end = System.currentTimeMillis();
  19. System.out.println("String: " +(end-start));
  20. start = System.currentTimeMillis();
  21. for ( int  i= 0 ;i< 100000 ;i++){
  22. test4();
  23. }
  24. end = System.currentTimeMillis();
  25. System.out.println("Pattern: " +(end-start));
  26. }
  27. //用StringTokenizer
  28. public   static   void  test1(){
  29. String input = "This is 1 just a test" ;
  30. StringTokenizer st = new  StringTokenizer(input);
  31. while (st.hasMoreTokens()){
  32. String s = st.nextToken();
  33. }
  34. }
  35. //用Scanner的方法
  36. public   static   void  test2(){
  37. String input = "This is 1 just a test" ;
  38. Scanner scanner = new  Scanner(input);
  39. scanner.useDelimiter(" " );
  40. while (scanner.hasNext()){
  41. String s = scanner.next();
  42. }
  43. }
  44. //用String的split方法
  45. public   static   void  test3(){
  46. String input = "This is 1 just a test" ;
  47. String [] str = input.split(" " );
  48. for ( int  i= 0 ;i<str.length;i++){
  49. String s = str[i];
  50. }
  51. }
  52. //用Pattern的方法
  53. public   static   void  test4(){
  54. Pattern pattern = Pattern.compile(" " );
  55. String input = "This is 1 just a test" ;
  56. String [] str = pattern.split(input);
  57. for ( int  i= 0 ;i<str.length;i++){
  58. String s = str[i];
  59. }
  60. }
  1. public static void main(String [] args){
  2. long start = System.currentTimeMillis();
  3. for(int i=0;i<100000;i++){
  4. test1();
  5. }
  6. long end = System.currentTimeMillis();
  7. System.out.println("StringTokenzier: "+(end-start));
  8. start = System.currentTimeMillis();
  9. for(int i=0;i<100000;i++){
  10. test2();
  11. }
  12. end = System.currentTimeMillis();
  13. System.out.println("Scanner: "+(end-start));
  14. start = System.currentTimeMillis();
  15. for(int i=0;i<100000;i++){
  16. test3();
  17. }
  18. end = System.currentTimeMillis();
  19. System.out.println("String: "+(end-start));
  20. start = System.currentTimeMillis();
  21. for(int i=0;i<100000;i++){
  22. test4();
  23. }
  24. end = System.currentTimeMillis();
  25. System.out.println("Pattern: "+(end-start));
  26. }
  27. //用StringTokenizer
  28. public static void test1(){
  29. String input = "This is 1 just a test";
  30. StringTokenizer st = new StringTokenizer(input);
  31. while(st.hasMoreTokens()){
  32. String s = st.nextToken();
  33. }
  34. }
  35. //用Scanner的方法
  36. public static void test2(){
  37. String input = "This is 1 just a test";
  38. Scanner scanner = new Scanner(input);
  39. scanner.useDelimiter(" ");
  40. while(scanner.hasNext()){
  41. String s = scanner.next();
  42. }
  43. }
  44. //用String的split方法
  45. public static void test3(){
  46. String input = "This is 1 just a test";
  47. String [] str = input.split(" ");
  48. for(int i=0;i<str.length;i++){
  49. String s = str[i];
  50. }
  51. }
  52. //用Pattern的方法
  53. public static void test4(){
  54. Pattern pattern = Pattern.compile(" ");
  55. String input = "This is 1 just a test";
  56. String [] str = pattern.split(input);
  57. for(int i=0;i<str.length;i++){
  58. String s = str[i];
  59. }
  60. }

运行了五次。输出结果如下:

  1. StringTokenzier:  110
  2. Scanner: 3281
  3. String: 453
  4. Pattern: 438
  5. StringTokenzier: 109
  6. Scanner: 3297
  7. String: 453
  8. Pattern: 438
  9. StringTokenzier: 110
  10. Scanner: 3265
  11. String: 485
  12. Pattern: 437
  13. StringTokenzier: 109
  14. Scanner: 3266
  15. String: 469
  16. Pattern: 437
  17. StringTokenzier: 109
  18. Scanner: 3297
  19. String: 469
  20. Pattern: 422
  1. StringTokenzier: 110
  2. Scanner: 3281
  3. String: 453
  4. Pattern: 438
  5. StringTokenzier: 109
  6. Scanner: 3297
  7. String: 453
  8. Pattern: 438
  9. StringTokenzier: 110
  10. Scanner: 3265
  11. String: 485
  12. Pattern: 437
  13. StringTokenzier: 109
  14. Scanner: 3266
  15. String: 469
  16. Pattern: 437
  17. StringTokenzier: 109
  18. Scanner: 3297
  19. String: 469
  20. Pattern: 422

StringTokenizer最快 
Scanner最慢。 
String和Pattern速度差不多。Pattern稍快些。

java中字符串切割的方法总结的更多相关文章

  1. 【转】Java中字符串中子串的查找共有四种方法(indexof())

    原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int ...

  2. Java中字符串中子串的查找共有四种方法(indexof())

    Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字 ...

  3. Java中字符串的一些常见方法

    1.Java中字符串的一些常见方法 /** * */ package com.you.model; /** * @author Administrator * @date 2014-02-24 */ ...

  4. Java中字符串indexof() 的使用方法

    Java中字符串中子串的查找共有四种方法(indexof())indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置.如果没有找到子字符串,则返回-1.如果 startind ...

  5. 三张图彻底了解Java中字符串的不变性

    转载: 三张图彻底了解Java中字符串的不变性 定义一个字符串 String s = "abcd"; s中保存了string对象的引用.下面的箭头可以理解为"存储他的引用 ...

  6. java中字符串String 转 int(转)

    java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法 ...

  7. java中substring的使用方法

    java中substring的使用方法 str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str: str ...

  8. [java,2017-05-16] java中清空StringBuffer的方法以及耗费时间比较

    java中清空StringBuffer的方法,我能想到的有4种: 1. buffer.setLength(0);  设置长度为0 2. buffer.delete(0, buffer.length() ...

  9. Java中字符串string的数据类型

    Java中字符串string的数据类型 时间:2017-07-03 08:01:47 YuanMxy 原文:https://blog.csdn.net/YuanMxy/article/details/ ...

随机推荐

  1. Linux下为PHP安装oci8及pdo_oci扩展

    下载instantclient 以及sdk instantclient-basic-linux-x86-64-11.2.0.2.0.zip oracle-instantclient11.2-sdk-1 ...

  2. 【BZOJ】1013: [JSOI2008]球形空间产生器sphere

    [BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...

  3. 大坑!常被忽视又不得不注意的小细节——%I64,%lld与cout(转载)

    原地址:http://blog.csdn.net/thunders01/article/details/38879553 刚刚被坑完,OI一年了才知道%I64和%lld有区别(做题会不会太少),lon ...

  4. 2014年度辛星css教程夏季版第二节

    第一节我们简介了一下CSS的工作流程,我相信读者会有一个大体的认识,那么接下来我们将会深入的研究一下CSS的细节问题,这些问题的涉及将会使我们的工作更加完善. *************注释***** ...

  5. Kinetic使用注意点--canvas

    <virtual> new Canvas(width, height) 参数: width:canvas宽度 height:canvas高度 方法: applyShadow(shape, ...

  6. 【已解决】Vmware无法创建虚拟网卡的问题

    最近因为各种需要,要在虚拟机里使用桥接方式连接.但是不管怎么操作,都无法添加虚拟网卡.连续好多天需要用到桥接上网,今儿多方搜索,找到了解决方案. 参考资料:http://tieba.baidu.com ...

  7. wordpress mobile templates

    http://themeforest.net/category/wordpress/mobile http://themeforest.net/item/monolith-wp-theme-for-b ...

  8. JDBC之PreparedStatement模糊查询

    今天要做一个关于模糊查询的需求,以前用JDBC做精确查询都是用 "SELECT * FROM test WHERE id = ?",所以用模糊查询时理所当然的也用了"SE ...

  9. zepto源码学习-06 touch

    先上菜,看这个模块的最后一段代码,一看就明白. ['swipe', 'swipeLeft', 'swipeRight', 'swipeUp', 'swipeDown', 'doubleTap', 't ...

  10. RWD

    http://webdesignerwall.com/tutorials/responsive-design-with-css3-media-queries http://www.webdesigns ...