String、StringBuilder和StringBuffer的区别及常用方法的使用

引言:本文将会对String、StringBuilder和StringBuffer的主要区别进行简要的概括,特别会从性能、安全性和使用场景上进行一定的分析。最后会对这三者常用的方法进行一定的归纳总结。适用于入门学习、面试以及日常开发中查找方法。

一、快速使用

1、性能

StringBuilder > StringBuffer >String

2、场景

需要经常改变字符串内容的使用StringBuilder或StringBuffer

3、性能和安全

优先使用StringBuilder,多线程使用共享变量时使用StringBuffer

4、概要

String有final修饰,不可变,每次赋值都会产生新的String对象(String是只读字符串)

StringBuilder和StringBuffer都是在原对象操作,是可变的字符串对象

StringBuilder是线程不安全的,StringBuffer是线程安全的(所有的方法都有synchronized修饰)

5、详情

StringBuilder和StringBuffer都继承了AbstractStringBuilder类,并且都覆盖了AbstractStringBuilder中的方法,但是StringBuffer覆写的方法都加了synchronized。

(1)StringBuilder和StringBuffer都继承了AbstractStringBuilder类

(2)StringBuilder和StringBuffer都覆盖了AbstractStringBuilder中的方法,但是StringBuffer覆写的方法都加了synchronized

 

 二、String的常用方法

 String类有final修饰,不可被继承。

【注】①final修饰类表示类不可被继承;

②final修饰方法表示方法不可被子类覆盖,但是可以重载;

③final修饰变量表示该变量一旦被赋值就不可以更改)

1、charAt(int index) 

【概述】返回 char指定索引处的值

【返回值】char

【参数】int index

【示例】

2、codePointAt(int index) 

【概述】返回指定索引处的字符(Unicode代码点)。

【返回值】int

【参数】

【示例】

3、codePointBefore(int index) 

【概述】返回指定索引之前的字符(Unicode代码点)

【返回值】int

【参数】

【示例】

4、codePointCount(int beginIndex, int endIndex) 

【概述】返回此 String指定文本范围内的Unicode代码点数

【返回值】int

【参数】

【示例】

5、compareTo(String anotherString)  

【概述】按字典顺序比较两个字符串

【返回值】int

【参数】

【示例】

6、compareToIgnoreCase(String str) 

【概述】按字典顺序比较两个字符串,忽略病例差异

【返回值】int

【参数】

【示例】

7、concat(String str)  

【概述】将指定的字符串连接到该字符串的末尾

【返回值】String

【参数】

【示例】

8、contains(CharSequence s) 

【概述】当且仅当此字符串包含指定的char值序列时才返回true。  

【返回值】boolean

【参数】

【示例】

9、contentEquals(CharSequence cs) 

【概述】将此字符串与指定的CharSequence进行 CharSequence 

【返回值】boolean

【参数】

【示例】

10、contentEquals(StringBuffer sb)  

【概述】将此字符串与指定的StringBuffer进行 StringBuffer

【返回值】boolean

【参数】

【示例】

11、copyValueOf(char[] data) 

【概述】相当于 valueOf(char[]) 

【返回值】String

【参数】

【示例】

12、copyValueOf(char[] data, int offset, int count)  

【概述】相当于 valueOf(char[], int, int) 

【返回值】String

【参数】

【示例】

13、endsWith(String suffix) 

【概述】测试此字符串是否以指定的后缀结尾

【返回值】boolean

【参数】

【示例】

14、equals(Object anObject) 

【概述】将此字符串与指定对象进行比较

【返回值】boolean

【参数】

【示例】

15、equalsIgnoreCase(String anotherString) 

【概述】将此 String与其他 String比较

【返回值】boolean

【参数】

【示例】

16、format(Locale l, String format, Object... args)   

【概述】使用指定的区域设置,格式字符串和参数返回格式化的字符串

【返回值】String

【参数】

【示例】

17、format(String format, Object... args) 

【概述】使用指定的格式字符串和参数返回格式化的字符串

【返回值】String

【参数】

【示例】

18、getBytes() 

【概述】使用平台的默认字符集将此 String编码为字节序列,将结果存储到新的字节数组中

【返回值】byte[]

【参数】

【示例】

19、getBytes(Charset charset)

【概述】使用给定的charset将该String编码为字节序列,将结果存储到新的字节数组中

【返回值】byte[]

【参数】

【示例】

20、 getBytes(String charsetName) 

【概述】使用命名的字符集将此 String编码为字节序列,将结果存储到新的字节数组中

【返回值】byte[]

【参数】

【示例】

21、getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 

【概述】将此字符串中的字符复制到目标字符数组中

【返回值】无

【参数】

【示例】

22、hashCode() 

【概述】返回此字符串的哈希码

【返回值】int

【参数】

【示例】

23、indexOf(int ch) 

【概述】返回指定字符第一次出现的字符串内的索引

【返回值】int

【参数】

【示例】

24、indexOf(int ch, int fromIndex) 

【概述】返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索

【返回值】int

【参数】

【示例】

25、indexOf(String str)  

【概述】返回指定子字符串第一次出现的字符串内的索引

【返回值】int

【参数】

【示例】

26、indexOf(String str, int fromIndex) 

【概述】返回指定子串的第一次出现的字符串中的索引,从指定的索引开始

【返回值】int

【参数】

【示例】

27、intern() 

【概述】返回字符串对象的规范表示

【返回值】String

【参数】

【示例】

28、isEmpty() 

【概述】如果字符串为空返回 true,否则返回 false

【返回值】boolean

【参数】

【示例】

29、join(CharSequence delimiter, CharSequence... elements) 

【概述】返回一个新的字符串,由 CharSequence elements的副本组成,并附有指定的delimiter的 delimiter 

【返回值】String

【参数】

【示例】

30、join(CharSequence delimiter, Iterable<? extends CharSequence> elements) 

【概述】返回一个新 String的副本组成 CharSequence elements与指定的副本一起加入 delimiter 

【返回值】String

【参数】

【示例】

31、lastIndexOf(int ch) 

【概述】返回指定字符的最后一次出现的字符串中的索引

【返回值】int

【参数】

【示例】

32、lastIndexOf(int ch, int fromIndex) 

【概述】返回指定字符的最后一次出现的字符串中的索引,从指定的索引开始向后搜索

【返回值】int

【参数】

【示例】

33、lastIndexOf(String str) 

【概述】返回指定子字符串最后一次出现的字符串中的索引

【返回值】int

【参数】

【示例】

34、lastIndexOf(String str, int fromIndex) 

【概述】从指定索引开始向后搜索,返回指定子字符串的最后一次出现的字符串中的索引

【返回值】int

【参数】

【示例】

35、length() 

【概述】返回此字符串的长度

【返回值】int

【参数】

【示例】

36、matches(String regex) 

【概述】判断这个字符串是否匹配给定的 regular expression 

【返回值】boolean

【参数】

【示例】

37、offsetByCodePoints(int index, int codePointOffset) 

【概述】返回此 String内的指数,与 index codePointOffset代码点

【返回值】int

【参数】

【示例】

 
38、regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 

【概述】判断两个字符串区域是否相等

【返回值】boolean

【参数】

【示例】

39、regionMatches(int toffset, String other, int ooffset, int len) 

【概述】判断两个字符串区域是否相等

【返回值】boolean

【参数】

【示例】

40、replace(char oldChar, char newChar) 

【概述】返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar 

【返回值】String

【参数】

【示例】

41、replace(CharSequence target, CharSequence replacement) 

【概述】将与字面目标序列匹配的字符串的每个子字符串替换为指定的字面替换序列

【返回值】String

【参数】

【示例】

42、replaceAll(String regex, String replacement) 

【概述】用给定的替换替换与给定的 regular expression匹配的此字符串的所有子字符串

【返回值】String

【参数】

【示例】

 
43、replaceFirst(String regex, String replacement) 

【概述】用给定的替换替换与给定的 regular expression匹配的此字符串的第一个子字符串  

【返回值】String

【参数】

【示例】

44、split(String regex) 

【概述】将此字符串分割为给定的 regular expression的匹配

【返回值】String[]

【参数】

【示例】

45、split(String regex, int limit) 

【概述】将这个字符串拆分为给定的 regular expression的匹配

【返回值】String[]

【参数】

【示例】

46、startsWith(String prefix) 

【概述】判断此字符串是否以指定的前缀开头。  

【返回值】boolean

【参数】

【示例】

47、startsWith(String prefix, int toffset) 

【概述】判断在指定索引处开始的此字符串的子字符串是否以指定的前缀开头。

【返回值】boolean

【参数】

【示例】

48、subSequence(int beginIndex, int endIndex) 

【概述】返回一个字符序列,该序列是该序列的子序列

【返回值】CharSequence

【参数】

【示例】

49、substring(int beginIndex) 

【概述】返回一个字符串,该字符串是此字符串的子字符串

【返回值】String

【参数】

【示例】

50、substring(int beginIndex, int endIndex) 

【概述】返回一个字符串,该字符串是此字符串的子字符串

【返回值】String

【参数】

【示例】

51、toCharArray() 

【概述】将此字符串转换为新的字符数组

【返回值】char[]

【参数】

【示例】

52、toLowerCase() 

【概述】将所有在此字符 String使用默认语言环境的规则,以小写

【返回值】String

【参数】

【示例】

53、toLowerCase(Locale locale) 

【概述】将所有在此字符 String ,以降低使用给定的规则情况下 Locale

【返回值】String

【参数】

【示例】

54、toUpperCase() 

【概述】将所有在此字符 String使用默认语言环境的规则大写

【返回值】String

【参数】

【示例】

55、toUpperCase(Locale locale) 

【概述】将所有在此字符 String使用给定的规则,大写 Locale

【返回值】String

【参数】

【示例】

56、trim()  

【概述】返回一个字符串,其值为此字符串,并删除所有空格

【返回值】String

【参数】

【示例】

57、valueOf(boolean b) 

【概述】返回 boolean参数的字符串 boolean形式

【返回值】String

【参数】

【示例】

58、valueOf(char c) 

【概述】返回 char参数的字符串 char形式

【返回值】String

【参数】

【示例】

59、valueOf(char[] data) 

【概述】返回 char数组参数的字符串 char形式

【返回值】String

【参数】

【示例】

60、valueOf(char[] data, int offset, int count) 

【概述】返回 char数组参数的特定子阵列的字符串 char形式

【返回值】String

【参数】

【示例】

61、valueOf(double d)

【概述】返回 double参数的字符串 double形式

【返回值】String

【参数】

【示例】

62、valueOf(float f) 

【概述】返回 float参数的字符串 float形式

【返回值】String

【参数】

【示例】

63、valueOf(int i)  

【概述】返回 int参数的字符串 int形式

【返回值】String

【参数】

【示例】

64、valueOf(long l) 

【概述】返回 long参数的字符串 long形式

【返回值】String

【参数】

【示例】

65、valueOf(Object obj) 

【概述】返回 Object参数的字符串 Object形式

【返回值】String

【参数】

【示例】

三、StringBuilder的常用方法

1、 append(boolean b) 

【概述】将 boolean参数的字符串表示附加到序列中

【返回值】StringBuilder

【参数】

【示例】


2、append(char c) 

【概述】将 char参数的字符串表示附加到此序列

【返回值】StringBuilder

【参数】

【示例】

3、append(char[] str)

【概述】将 char数组参数的字符串表示追加到此序列

【返回值】StringBuilder

【参数】

【示例】

4、append(char[] str, int offset, int len) 

【概述】将 char数组参数的子阵列的字符串表示附加到此序列

【返回值】StringBuilder

【参数】

【示例】

5、append(CharSequence s) 

【概述】将指定的字符序列追加到此 Appendable 

【返回值】StringBuilder

【参数】

【示例】

6、append(CharSequence s, int start, int end)

【概述】追加指定的序列 CharSequence的序列

【返回值】StringBuilder

【参数】

【示例】

7、append(double d) 

【概述】将 double参数的字符串表示法附加到此序列

【返回值】StringBuilder

【参数】

【示例】

8、append(float f) 

【概述】将 float参数的字符串表示附加到此序列

【返回值】StringBuilder

【参数】

【示例】

9、append(int i) 

【概述】将 int参数的字符串表示法附加到此序列

【返回值】StringBuilder

【参数】

【示例】

10、append(long lng) 

【概述】将 long参数的字符串表示法附加到此序列

【返回值】StringBuilder

【参数】

【示例】

11、append(Object obj) 

【概述】追加 Object参数的字符串 Object形式

【返回值】StringBuilder

【参数】

【示例】

12、append(String str) 

【概述】将指定的字符串附加到此字符序列

【返回值】StringBuilder

【参数】

【示例】

13、append(StringBuffer sb) 

【概述】将指定 StringBuffer这个序列

【返回值】StringBuilder

【参数】

【示例】

14、appendCodePoint(int codePoint) 

【概述】将 codePoint参数的字符串表示附加到此序列

【返回值】StringBuilder

【参数】

【示例】

15、capacity() 

【概述】返回当前容量

【返回值】int

【参数】

【示例】

16、charAt(int index) 

【概述】返回 char在指定索引在这个序列值

【返回值】char

【参数】

【示例】

17、codePointAt(int index) 

【概述】返回指定索引处的字符(Unicode代码点)

【返回值】int

【参数】

【示例】

18、codePointBefore(int index) 

【概述】返回指定索引之前的字符(Unicode代码点)

【返回值】int

【参数】

【示例】

19、codePointCount(int beginIndex, int endIndex) 

【概述】返回此序列指定文本范围内的Unicode代码点数

【返回值】int

【参数】

【示例】

20、delete(int start, int end) 

【概述】删除此序列的子字符串中的字符

【返回值】StringBuilder

【参数】

【示例】

21、deleteCharAt(int index) 

【概述】删除 char在这个序列中的指定位置

【返回值】StringBuilder

【参数】

【示例】

22、ensureCapacity(int minimumCapacity) 

【概述】确保容量至少等于规定的最小值

【返回值】

【参数】

【示例】

23、getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 

【概述】字符从该序列复制到目标字符数组 dst 

【返回值】

【参数】

【示例】

24、indexOf(String str) 

【概述】返回指定子字符串第一次出现的字符串内的索引

【返回值】int

【参数】

【示例】

25、indexOf(String str, int fromIndex) 

【概述】返回指定子串的第一次出现的字符串中的索引,从指定的索引开始

【返回值】int

【参数】

【示例】

26、insert(int offset, boolean b) 

【概述】将 boolean参数的字符串表示插入到此序列中

【返回值】StringBuilder

【参数】

【示例】

27、insert(int offset, char c) 

【概述】在此序列中插入 char参数的字符串表示形式

【返回值】StringBuilder

【参数】

【示例】

28、insert(int offset, char[] str) 

【概述】在此序列中插入 char数组参数的字符串表示形式

【返回值】StringBuilder

【参数】

【示例】

29、insert(int index, char[] str, int offset, int len) 

【概述】在此序列中插入 str数组参数的子阵列的字符串表示形式

【返回值】StringBuilder

【参数】

【示例】

30、insert(int dstOffset, CharSequence s) 

【概述】将指定的 CharSequence这个序列

【返回值】StringBuilder

【参数】

【示例】

31、insert(int dstOffset, CharSequence s, int start, int end) 

【概述】将指定的CharSequence的子 CharSequence插入到此序列中

【返回值】StringBuilder

【参数】

【示例】

32、insert(int offset, double d) 

【概述】在此序列中插入 double参数的字符串表示形式

【返回值】StringBuilder

【参数】

【示例】

33、insert(int offset, float f) 

【概述】在此序列中插入 float参数的字符串表示形式

【返回值】StringBuilder

【参数】

【示例】

34、insert(int offset, int i) 

【概述】将第二个 int参数的字符串表示插入到此序列中

【返回值】StringBuilder

【参数】

【示例】

35、insert(int offset, long l) 

【概述】在此序列中插入 long参数的字符串表示形式

【返回值】StringBuilder

【参数】

【示例】

36、insert(int offset, Object obj) 

【概述】将 Object参数的字符串表示插入到此字符序列中

【返回值】StringBuilder

【参数】

【示例】

37、insert(int offset, String str) 

【概述】将字符串插入到此字符序列中

【返回值】StringBuilder

【参数】

【示例】

38、lastIndexOf(String str) 

【概述】返回指定子字符串最右边出现的字符串内的索引

【返回值】int

【参数】

【示例】

39、lastIndexOf(String str, int fromIndex) 

【概述】返回指定子字符串最后一次出现的字符串中的索引

【返回值】int

【参数】

【示例】

40、length() 

【概述】返回长度(字符数)

【返回值】int

【参数】

【示例】

41、offsetByCodePoints(int index, int codePointOffset) 

【概述】返回此序列中与 index由 codePointOffset代码点偏移的索引

【返回值】int

【参数】

【示例】

42、replace(int start, int end, String str) 

【概述】用指定的String中的字符替换此序列的子字符串中的 String 

【返回值】StringBuilder

【参数】

【示例】

43、reverse() 

【概述】导致该字符序列被序列的相反代替

【返回值】StringBuilder

【参数】

【示例】

44、setCharAt(int index, char ch) 

【概述】指定索引处的字符设置为 ch 

【返回值】

【参数】

【示例】

45、setLength(int newLength)

【概述】设置字符序列的长度

【返回值】

【参数】

【示例】

46、subSequence(int start, int end) 

【概述】返回一个新的字符序列,该序列是该序列的子序列

【返回值】CharSequence

【参数】

【示例】

47、substring(int start) 

【概述】返回一个新的 String ,其中包含此字符序列中当前包含的字符的子序列

【返回值】String

【参数】

【示例】

48、substring(int start, int end) 

【概述】返回一个新的 String ,其中包含此序列中当前包含的字符的子序列

【返回值】String

【参数】

【示例】

四、StringBuffer的常用方法

参考StringBuilder

StringBuilder和StringBuffer都继承了AbstractStringBuilder类,并且都覆盖了AbstractStringBuilder中的方法,但是StringBuffer覆写的方法都加了synchronized。这里暂时就不对StringBuffer类里面的方法做过多的描述。

未完。。。待续。。。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
StringStringBuilderStringBufferJava中用于处理字符串的三种类。 String是不可变的,也就是说一旦创建就不能被修改。每次对String进行操作(如拼接、替换)都会生成一个新的String对象,原始的String对象则会被丢弃。这使得在频繁操作字符串的情况下,会产生大量的临时对象,造成内存浪费。因此,当字符串不需要频繁修改时,可以使用String来提高性能。 StringBuilderStringBuffer是可变的字符串类,它们可以进行修改操作而不会创建新的对象。两者的主要区别在于线程安全性和性能上的差异。 StringBuffer是线程安全的,所有的方法使用synchronized关键字进行同步,保证了多线程环境下的安全性。然而,这也导致了性能上的损失,因为同一时间只能有一个线程访问StringBuffer对象。 StringBuilder是非线程安全的,它的方法没有使用synchronized关键字进行同步。这使得在单线程环境下,StringBuilder的性能比StringBuffer更好。因此,如果在单线程环境下进行字符串操作,建议使用StringBuilder。 如果需要将StringBufferStringBuilder对象转换为String对象,有两种方法可以实现。一种是通过调用toString()方法,将其转换为String对象。另一种是通过String的构造器String(StringBuffer buffer)来创建一个新的String对象,该构造器会将StringBuffer的内容复制到新的String对象中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [StringStringBufferStringBuilder类详解](https://blog.csdn.net/weixin_38568503/article/details/113794751)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一碗谦谦粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值