您的位置:首页 > 编程语言 > Java开发

JAVA性能优化之 String

2017-06-26 15:32 423 查看
1.String 3个基本特点,不变性、针对常量池的优化及类的final定义

2.String对象的4种创建方式:

①当时用任何方式来创建一个字符串对象X时,Java运行时(运行中JVM)会拿着这个X在String池中查找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串X,否则不会创建对象,即不会在池中添加;

②Java内部只要使用new关键字来创建对象,则一定会(在堆区或者栈区)创建一个新的对象;

③使用自己指定或者使用纯字符串串联来创建String对象,则仅仅会检查维护String池中的字符串,池中没有就传教一个,如果存在,就不需要创建新的,但绝不会再堆栈区再去创建该String对象;

④使用包含变量的表达式来创建String对象,则不仅会检查并维护String池,而且还会在堆栈区创建一个String对象。

3.String对象的SubString方法

String.substring()返回的String仍然会保存原始的String,而重新newString构造一个仅包含截取出的字符串的String可以节省内存。

字符串截取的效率问题:

当需要截取的字符串长度总和大于等于原始文本长度,使用String.substring()可以共享原始文本从而节省内存。

当需要截取的字符串长度总和远小于原始文本长度,使用 new String(String.substring())会节省内存。

4.如果查找单个字符的话,用charat()代替startwith()

5.字符串相加的时候,若该字符串只有一个字符的话,建议用” 代替””

String string=s+”d” >>> String string=s+’d’

6.字符串切割 split方法的效率比stringtokenizer类低很多,对于需要使用indexof()和substring()这两个方法的应用场景,也建议使用stringtokenizer代替

7.字符串的合并

string对象串接 <(效率低于)concat方法连接 <使用StringBuilder类append()方法

StringBuilder总体来说优于StringBuffer。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息