`
java-mans
  • 浏览: 11427637 次
文章分类
社区版块
存档分类
最新评论

JAVA6,请使用字符串加操作。

 
阅读更多

从JAVA诞生那天起,稍微“有些水平”的程序员都被告知,如果有大量的字符串连结,请不要使用字符串相加,而应该使用

StringBuffer的append操作然后toString().

到了JAVA5,我们又被告诉知,StringBuilder是StringBuffer的非同步版,所以绝对大多数时候我们“更”可以用StringBuilder

来代替加操作。因为一个可能被多线程访问的实例字段的StringBuffer操作的情况很少,和在方法中调用字符串连结相比1%都不到。

但是到了JAVA6,因为编译器“始终”把字符串的+连结编译成StringBuilder,所以在99%的情况,我们应该使用加操作。

理由是:

1.用加操作比其它操作看起来直观,写起来省事,JAVA6之前,即使明知道有性能问题我们还会在一些时候全使用+连结,根本原因当然是

这种写法直观,简单。

String str = "Axman" + " is " + "a great lion.";

//请注意,这里的例子只是为了说明"+"写法直观,并不是说只有常量字符串相加(常量字符串其实直接编译成一个字符串而不是

//append了)JAVA6才优化,那是之前的事,对于JAVA6,只要有是字符串操作的的+连结(第一个变量或常量是字符串),后面不管是常量还是变量,都会进行编译优化

StringBuilder sb = new StringBuilder();

sb.append("Axman")

.append(" is ")

.append(" a great lion.");

String str = sb.toString();

谁要说第二种试方式美观写起来爽我一定当面抽他。打到他脑子正常为止。

2.我们有时还自觉不自觉地使用StringBuffer,而JAVA6总是把第一种形式优化为StringBuilder,在99%的情况下性能更好,除非你需要一个被多线程访问的实例字段操作。

3.特别是,有时我们自己写StringBuilder时,sb.append(line);后来想在前后加一个"<",">",于是很懒地写成

sb.append("<"+line+">");这种情况非常多,但这样情况是先生成一个StringBuilder计算"<"+line+">",然后toString()

StringBuilder所append,还不如全部加操作让编译器用一个StringBuilder来append.

当然,循环中加操作千万不要这么做(这种需求除了测试,实际应用可能是万分之一的机会吧?),编译器虽然会优化编译,但它是在循环内部生成StringBuilder而不是在外部。这种情况一定要自己在外部手工定义StringBuilder而不能依赖编译器了。但绝对多数情况,也就是99%的情况我们是 str = "axman" + new Object() +1 + "good" +.......这种方式,完全可以信任编译器来优化。

另外只有两个字符串连结时请使用concat.

实在忍无可忍,对于一些伪技术人员,如果你觉得你需要反驳我的观点,请你贴上你的源码和编译后的效果来反驳,不要无耻地说两句放屁的话。

分享到:
评论

相关推荐

    使用Java操作JSON字符串对象

    使用Java操作JSON字符串对象,使用Java操作JSON字符串对象

    java 用递归实现字符串反转

    java 用递归实现字符串反转 java 用递归实现字符串反转

    JAVA的字符串拼接与性能

    在JAVA中拼接两个字符串的最简便的方式就是使用操作符”+”了。如果你用”+”来连接固定长度的字符串,可能性能上会稍受影响,但是如果你是在 循环中来”+”多个串的话,性能将指数倍的下降。假设有一个字符串,我们...

    JAVA 字符串 操作

    JAVA 字符串 操作

    29.java字符串+操作.zip

    29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29...

    Java字符、字符串、数组操作实例.rar

    Java字符、字符串、数组操作实例,主要是数组的复制、反转字符串中的字符、命令行参数、求字符串的长度及每一个位置上的字符、数组的排序、String类数组的操作等方面的例子,相信对初学者学习Java有帮助的。

    练习使用Java基本数据类型。使用Java的String类操作字符串和子串

    使用Java的String类操作字符串和子串。 实验内容: 1.写一个程序提示用户键入某一货币数量(以分为单位),该程序应计算出如何用最少量的1元,50分,10分和1分硬币得到该数目。如195分最少可以用一个1元硬币,1个50分...

    java中字符串的操作汇总

    学好java,一定要掌握java字符串的操作方式,这样才能更好的了解java的编码方式。

    java字符串操作大全

    java字符串操作大全,适合初学者,浅显易懂 部JAVA字符串操作 2008-07-11 15:39:42| 分类: JAVA | 标签: |字号大中小 订阅 . JAVA字符串的方法 String a = "53c015"; //Integer.parseInt(s, radix) radix设置为...

    JAVA字符串操作类CTool.java字符转换类.rar

    JAVA字符串操作类CTool.java字符转换类,此类中收集Java编程中WEB开发常用到的一些工具。为避免生成此类的实例,构造方法被申明为private类型的。封装的功能:字符串从GBK编码转换为Unicode编码、对字符串进行md5...

    java字符串替换 代码转换相关源码.rar

    java字符转换类代码,可以实现判断字符串是否为空,并删除首尾空格,字符串替换函数,代码转换,GBK转换为ISO-8859-1,代码转换 从srcCode转换为destCode,代码转换,GBK转换为big5,替换非法字符,标记本身等于分隔...

    Java源码海量字符串的快速操作.rar

    Java源码海量字符串的快速操作.rar

    java通用字符串连接

    通用字符串连接 可自定义连接分隔符 支持List Set Map 数组 等集合,可自定义字符串提取规则

    java 字符串操作类

    包括常用的分隔,插入,判空,判非空,去空格等20多种方法。方便实用、 JAVA自定义Util大放送-集成j2ee精英团队十年编程之精华

    类似java的StringBuilder的动态字符串

    刚从java转过来感觉c的字符串操作太麻烦了所以自己写了一个类似java的StringBuilder类的头文件 它支持java的StringBuilder支持的很多操作大大方便了对字符串的操作 能力所限如有bug请指出&lt;/h1&gt;

    Java代码小工具(长文本字符串转换)

    在编写Java代码时,如果字符串过长,比如长篇幅的HTML代码或者SQL语句,就很难用一对双引号括起来,因为在java中,字符串常量是不能换行的。这种初期开发时,临时模拟中间数据测试非常不方面。本工具用于把多行长...

    Java 字符串操作源码实例集.rar

    JAva方面操作字符串和文本的相关代码集,面向Java初学者,高手请绕行,这些实例都是挺简单的,可帮助初学者熟悉这方面的基础操作。

    String 字符串操作、比较、查找字符、替换、反转、分割等

    java字符串操作常用实例,String 字符串操作、比较、查找字符、替换、反转、分割等

    java 去掉重复字符 三个方法

    可以将字符串中的重复字符去除。程序设计精致,涉及到集合、集合foreach方法迭代、instanceof操作符的使用,适合Java初学者作为学习资料。

    Java字符串工具类

    Java常用的字符串操作工具 字符串转为整型,如转换出异常将返回0 补充字符系列 -1:左补充; 1:右补充

Global site tag (gtag.js) - Google Analytics