Java字符串性能优化

简介:

1、字符串连接,使用StringBuilder替代“+”号

建议:创建指定初始容量的StringBuilder(非线程安全,优先)或StringBuffer(线程安全)对象,使用append方法连接字符串。
禁止:使用多个“+”号连接String。
原因:由于String为不可变类,每次使用“+”号连接两个String对象,结果会产生一个新的String对象;多次使用“+”号连接中间结果会产生很多无用的String对象,占用过多内存,加重GC负担。
同时StringBuilder/StringBuffer内部使用一个字符数组存储字符,如果未设置初始容量,该字符数组默认大小为16,如果字符数组满则会扩容(即建一个更大的字符数组,并将原有的数组中的字符复制到新数组,并丢弃旧数组)。如果字符数组多次扩容,则会产生很多无用的中间字符数组,以及多次无意义的字符拷贝,性能低下

2、拆分字符串,使用Apache
Common包的StringUitls类的split()方法替代String类的split()方法,根据分隔符将字符串拆分成字符串数组

建议:使用Apache Common包的StringUitls类的split()方法拆分字符串。
禁止: String类的split()方法。
原因:String类的split()方法接受的分隔符为正则表达式,用正则表达式匹配效率比较低。而Apache Common包的StringUitls类的split()方法接受的分隔符为普通字符串,使用字符串查找匹配效率较高。
正确示例:

 StringUitls.split(“a||b||c”, “||”)

3、尽量使用基本类型和String常量,避免创建基本类型包装对象和String对象

建议:使用基本类型和String常量
杜绝:尽量避免创建基本类型包装对象和String对象
原因:虽然包装类型和基本类型在使用过程中是可以相互转换,但它们两者所产生的内存区域是完全不同的。基本类型数据产生和处理都在栈中处理,包装类型是对象,是在堆中产生实例。
String常量在JVM采用常量池,代码中不同地方出现的相同String常量实际上是同一个对象;而每次创建String对象都是在堆中产生一个新的实例。
注:实际编程中,经常存在基本类型和包装类型的转换,如果无法避免和使用基本类型代替,则需要尽量减少转换的次数。
正确示例:

String str = “aaaa”
目录
相关文章
|
6天前
|
机器学习/深度学习 移动开发 测试技术
《手把手教你》系列技巧篇(五十一)-java+ selenium自动化测试-字符串操作-下篇(详解教程)
【5月更文挑战第15天】自动化测试中进行断言的时候,我们可能经常遇到的场景。从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言。这个时候就需要我们对字符串进行操作,宏哥这里介绍两种方法:正则和字符串切片函数split()。
23 2
|
1天前
|
安全 物联网 Java
未来交织:新兴技术的融合与革新深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第27天】 在数字化的浪潮中,创新技术如同星辰般璀璨,引领着时代的前行。本文聚焦于区块链、物联网(IoT)、虚拟现实(VR)等前沿科技,剖析它们的发展脉络,并探讨这些技术的交互融合与实际应用。通过深入分析,我们预见这些技术将如何重塑经济结构、改善人类生活,并引发社会层面的深刻变革。
|
1天前
|
安全 Java 索引
Java字符串类详解
Java字符串类详解
8 1
|
1天前
|
安全 算法 Java
Java并发编程中的线程安全与性能优化
【5月更文挑战第27天】在Java并发编程中,线程安全和性能优化是两个重要的主题。本文将深入探讨如何通过使用synchronized关键字、volatile关键字、Lock接口和原子类等技术来实现线程安全,并介绍如何利用Java并发工具类库来提高程序的性能。
|
1天前
|
Java
Java集合类ArrayList应用 | 如何在字符串s1中删除有在字符串s2出现的字符?
这是一个关于Java编程面试题的摘要,题目要求从字符串s1中删除s2中存在的字符。解题思路包括使用ArrayList或StringBuilder实现。ArrayList实现时,遍历s1,如果字符不在s2中,则添加到ArrayList;StringBuilder实现有两种方法,一是新建StringBuilder并追加s1,然后遍历删除s2中的字符,二是直接在原地修改s1的StringBuilder对象。代码示例中展示了这些方法。
19 3
|
1天前
|
安全 Java
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第27天】本文深入探讨了Java并发编程的核心概念,包括线程安全和性能优化。我们将详细分析synchronized关键字、volatile变量、原子类和锁等关键技术,并通过实例演示如何在保证线程安全的同时提高程序性能。通过阅读本文,您将能够更好地理解Java并发编程的原理,并在实际开发中应用这些知识。
|
2天前
|
安全 算法 Java
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第26天】在Java开发中,高效地处理并发编程问题对于提升应用的性能和稳定性至关重要。本文将深入探讨Java中的线程安全性问题,分析并发编程的挑战,并介绍一系列实用的解决方案和性能优化技巧。我们将通过具体示例,包括锁机制、线程池以及原子类等高级特性,来指导开发者如何在实践中实现高效的并发控制。
|
3天前
|
Java 开发者
Java中的多线程编程:理解、实现与性能优化
【5月更文挑战第25天】 在Java中,多线程编程是实现并发执行任务的关键手段。本文将深入探讨Java多线程的核心概念,包括线程的创建、生命周期、同步机制以及高级特性。我们将通过实例演示如何有效地创建和管理线程,同时着重分析多线程环境下的性能调优策略和常见问题解决方法。文章旨在为读者提供一个全面的视角,帮助其掌握Java多线程编程的技巧,并在实际开发中避免潜在的并发问题,提升程序的性能和稳定性。
|
3天前
|
存储 算法 Java
深入解析Java虚拟机(JVM):技术原理与性能优化
深入解析Java虚拟机(JVM):技术原理与性能优化
19 1
|
4天前
|
缓存 算法 Java
JAVA性能优化与调优
本文介绍了Java性能优化与调优的重要性,强调了选择合适的数据结构和算法、减少对象创建与销毁、利用多线程并发处理等方法。示例代码展示了如何在不同场景下优化性能,如使用HashMap代替ArrayList提高查找效率,以及通过线程池和CountDownLatch实现并发任务。此外,文中还提到其他优化技巧,如JVM参数调优、缓存使用、避免不必要的异常处理和选择高效IO操作。性能优化是一个持续过程,需结合具体需求进行实践。