`
yanghaoli
  • 浏览: 288428 次
社区版块
存档分类
最新评论

提高你的Java代码质量吧:你能正确使用String、StringBuffer、StringBuilder吗

 
阅读更多

一、建议 

CharSequence接口有三个实现类与字符串相关:String、StringBuffer、StringBuilder,虽然它们都与字符串相关,但是其处理机制不同。 

根据不同的场景,建议使用不同的字符序列 

1.使用String类的场景:在字符串不经常变化的场景中可以使用String类,例如常量的声明、少量的变量运算。 

2.使用StringBuffer类的场景:在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装 

3.使用StringBuilder类的场景:在频繁进行字符串运算(如拼接、替换、和删除等),并且运行在单线程的环境中,则可以考虑使用StringBuilder,如SQL语句的拼装、JSON封装等 

二、分析 

String类:是不可改变的量,也就是创建后就不能在修改了 

StringBuffer类:是一个可变字符串序列,它与String一样,在内存中保存的都是一个有序的字符串序列(char类型的数组),不同点是StringBuffer对象的值都是可变的 

StringBuilder类:与StringBuffer类基本相同,都是可变字符换字符串序列,不同点是StringBuffer是线程安全的,StringBuilder是线程不安全的。 

在性能方面,由于String类的操作是产生新的String对象,而StringBuilder和StringBuffer只是一个字符数组的扩容而已,所以String类的操作要远慢于StringBuffer和StringBuilder。 

三、场景 

如: 

 

[java] view plaincopy
 
  1. String str = "abc";   
  2. String str1 = str.substring(1);   

 

str是一个字符串对象,值是"abc",通过substring方法又重新生成了一个字符串str1,其值是"bc",也就是说str引用的对象一旦产生就永远不会改变。 

如: 

 

[java] view plaincopy
 
  1. StringBuffer sb = new StringBuffer("a");   
  2. sb.append("b");   

 

sb的值在改变,初始化时"a",经过append方法后,值变成了"ab"。它与String类通过"+"连接的区别 

如: 

 

[java] view plaincopy
 
  1. String s = "a";   
  2. s = s + "b";   

 

字符串变量s初始化时是"a"对象的引用,经过加号计算后,s变量就修改为"ab"的引用,但是初始化的”a“的对象还是没有改变,只是变量s指向了新的引用地址。而StringBuffer对象,它的引用地址虽不变,但值在改变。 

1
3
分享到:
评论

相关推荐

    java CharSequence、String、StringBuffer、StringBuilder详解

    在Java编程语言中,`CharSequence`是一个接口,它是字符序列的抽象基类,包括`String`、`StringBuffer`和`StringBuilder`等类。理解这些类的特点和用途是优化程序性能的关键。以下是对这些概念的详细解释: 1. `...

    Java String、StringBuffer与StringBuilder的区别

    Java中的String、StringBuffer和StringBuilder都是用来处理字符串的类,但在使用场景和性能上有显著区别。下面我们将详细探讨这三个类的特性和差异。 1. **String类** - **不可变性**:String对象一旦创建,其内容...

    15_常用API_第1天(Object、String、StringBuffer、用户登陆注册)_讲义

    在实际编程中,理解并熟练运用这些API可以极大地提高开发效率和代码质量。学习这些内容有助于构建基本的Java应用程序,尤其是在处理字符串操作和用户交互时。同时,了解如何安全地处理用户数据对于任何开发者来说都...

    Java StringBuffer

    Java中的`StringBuffer`类是处理可变字符串的重要工具,特别...理解和熟练运用`StringBuffer`可以优化代码性能,提高程序质量。在实际开发中,根据需求选择使用`StringBuffer`还是`StringBuilder`,平衡效率与安全性。

    初步支持String和StringBuffer类

    在Java编程语言中,`String`和`StringBuffer`类是处理字符串的两个核心类,它们在日常开发中扮演着重要角色。这篇文章将深入探讨这两个类的特性、用途以及它们之间的区别。 首先,`String`类是不可变的,这意味着...

    JAVA中关于String的一些注意点

    ### JAVA中关于String的一些注意点 在Java编程语言中,`String` 类是最常用的数据类型之一,...理解`String` 的特性及使用技巧对于提高代码质量和程序性能至关重要。希望本文能够帮助读者更好地掌握和应用这些知识点。

    javastring.pdf

    5. **性能优化**:在需要多次修改字符串的场合,使用`StringBuilder`或`StringBuffer`而非直接使用`String`,因为它们支持动态增长,而不会每次都创建新的对象。 6. **字符串比较**:`compareTo`和`equals`方法的...

    Java代码优化1

    【Java代码优化1】 在Java编程中,代码优化是一个关键环节,它关乎程序的性能、内存...综上所述,Java代码优化涉及多个方面,包括性能提升、代码规范、对象管理等,理解并运用这些技巧可以显著提高程序的质量和效率。

    Java 编程 :常见问题汇总

    ### Java 编程:常见问题汇总 #### 一、字符串连接误用 在Java编程中,经常需要处理字符串连接的问题。...通过遵循这些最佳实践,开发者可以在编写Java程序时避免许多常见的陷阱,提高代码的质量和可维护性。

    java代码性能的优化

    本文将从给定的文件信息出发,详细阐述如何通过一系列具体的方法来提高Java代码的质量与系统性能。 #### 1. 合理管理资源 在Java程序中,合理管理资源可以显著提升性能。例如,在使用数据库连接、文件流等资源时,...

    sql的封装,不需要使用StringBuffer进行字符串拼接

    早期的开发实践中,开发者经常使用`StringBuffer`或`StringBuilder`来拼接这些条件,但这并不是一个高效且安全的方法。本话题将深入探讨如何避免使用`StringBuffer`进行SQL字符串拼接,以及更推荐的SQL封装技术。 ...

    java的String字符串补0

    通过以上分析,我们可以看到Java中实现字符串补0并不复杂,但正确理解和灵活运用这一技巧对于提高代码质量和程序性能至关重要。希望本文能帮助读者更好地掌握这一技能,并能在实际项目中加以应用。

    Java类库复习——java.lang.String

    总的来说,`String`类是Java开发中不可或缺的一部分,理解和掌握其特性和方法对于编写高质量的代码至关重要。通过深入研究源码,我们能更深入地理解Java内存管理以及如何优化字符串操作。在日常开发中,应充分利用`...

    Java编程最差实践

    Java编程实践中,有些常见的错误和不推荐的做法可能会对程序性能造成影响,降低代码质量,甚至在面试中成为考察点。以下是一些Java编程最差实践的详细解释和改进方案: 1. **字符串连接误用**: - 错误做法:使用`...

    java工具类(String)

    Java中的字符串处理是编程工作中非常常见且重要...理解并熟练使用这些工具类和方法,对于编写高效、简洁的Java代码至关重要。在实际开发中,合理选择和组合这些工具,可以帮助我们更好地完成字符串操作,提升代码质量。

    java-API-String类

    ### Java API - String类详解 #### 一、Java 基础概述 在Java中,`String`类是非常重要的一个类,它提供了大量的方法来处理字符串。...同时,掌握`String`类的使用对于编写高质量的Java程序也是非常重要的。

    Java编程中常见问题汇总

    ### Java编程中常见问题汇总 #### 一、引言 在日常开发中,Java程序员往往会遇到各种各样的问题,有些...遵循最佳实践不仅可以提升代码质量,还能提高程序的性能。希望本文能帮助开发者们更好地理解和掌握这些知识点。

    字符串数组转换成string类型的

    在Java中,可以使用`StringBuilder`或`StringBuffer`类来实现。这两个类提供了`append()`方法,可以将字符串拼接在一起。例如: ```java String[] strArray = {"Hello", "World"}; StringBuilder sb = new ...

Global site tag (gtag.js) - Google Analytics