admin 管理员组文章数量: 1087947
2024年3月13日发(作者:xml用于什么地方)
Java性能编程规范
1 字符串操作
规则1.1:需要同步的情况下,采用StringBuffer处理字符串拼装。
说明
编程时,当字符串连接超过3次的情况下,请使用StringBuffer而不是“+”。因为String
是不变(Immutable)对象类,使用“+”会创建新String临时对象,因此增加了创建与回
收临时对象的开销。StringBuffer对象是可变(mutable)对象类,不存在该问题。在JDK1.5
之后,增加了StringBuilder类,在单线程中使用时,StringBuilder的效率要高于StringBuffer。
详见规则1.2。
【示例】
String str = strA + StrB + StrC; //会创建临时对象strA + StrB
可修改为:
StringBuffer strBuf = new StringBuffer(128);
(strA).append(strB).append(strC);
规则1.2:不需要同步的情况下,使用StringBuilder处理字符串拼装。
说明
从 JDK 5 开始,JDK为StringBuffer补充了一个单个线程使用的等价类StringBuilder。
StringBuilder与StringBuffer支持所有相同的操作,不同点在于StringBuilder的方法不是
线程安全的,StringBuffer的方法是线程安全的,因此StringBuilder速度更快。所以,当
不存在线程安全问题时,应该优先使用StringBuilder。
【示例】
String str = strA + StrB + StrC; //会创建临时对象strA + StrB
当不需要考虑线程安全问题时,可修改为:
StringBuilder strBuilder = new StringBuilder(128);
(strA).append(strB).append(strC);
规则1.3: 避免频繁或对大对象使用String类的replaceAll方法。
说明
因为String是不变对象类,对象在执行replaceAll方法时,因为替换操作将创建大量新的
临时对象,这些对象的创建和回收将消耗系统性能。如果要进行这样的操作,考虑使用
Pattern类和Matcher类。
【示例】
Pattern p = e("cat");
Matcher m = r("one cat two cats in the yard");
StringBuffer sb = new StringBuffer();
while (())
{
Replacement(sb, "dog");
}
Tail(sb);
n(ng());
规则1.4: 避免大对象使用默认的toString方法转换为字符串。
说明
【示例】
规则1.5: 不要通过new方式来创建常量字符串。
说明
在java语言中,对于字符串常量,虚拟机会通过常量池机制确保其只有一个实例。常量
版权声明:本文标题:[标准规范]java编程规范-性能编程(精编) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1710274437a565578.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论