JAVA性能优化之 String

本文深入探讨了Java中String类的三个核心特性:不变性、常量池优化及final定义。介绍了四种创建String对象的方法及其内部机制,并对比了不同字符串操作如连接、截取等的效率,为开发者提供实用指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值