String, StringBuffer与StringBuilder的使用

一、java.lang.StringBuffer   代表可变的字符序列,可以对字符串内容进行增删

二、java.lang.StringBuilder  代表可变的字符序列,可以对字符串内容进行增删,  是JDK1.5新加入的,线程不安全,对字符串内

        容进行增删效率高于StringBuffer

三、他们都可以使用下面的方法:

StringBuffer append(String s),   StringBuffer append(int n)

StringBuffer append(Object o) StringBuffer append(char n),

StringBuffer append(long n),  StringBuffer append(boolean n),

StringBuffer insert(int index, String str)

public StringBuffer reverse()

StringBuffer delete(int startIndex, int endIndex)

public char charAt(int n )

public void setCharAt(int n ,char ch)

StringBuffer replace( int startIndex ,int endIndex, String str)

public int indexOf(String str)

public String substring(int start,int end)

public int length()

 

总结:

StringBuilder StringBuffer 非常类似,均代表可变的字符序列,而且方法也一样

String:不可变字符序列,引用数据类型,并且是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类

StringBuffer:可变字符序列、效率低、线程安全

StringBuilder(JDK1.5):可变字符序列、效率高、线程不安全

三者效率从高到低:StringBuilder>StringBuffer>String

注意:String使用陷阱:

 string s="a"; //创建了一个字符串
 s=s+"b"; //实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。

 

@@面试问题:

4. String、StringBuffer、StringBuilder区别与联系
   1) String类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象销毁。

   2) StringBuffer类则代表一个字符序列可变的字符串,可以通过append、insert、reverse、setChartAt、setLength等方法改变其内容。一旦生成了最终的字符串,调用toString方法将其转变为String

   3) JDK1.5新增了一个StringBuilder类,与StringBuffer相似,构造方法和方法基本相同。不同是StringBuffer是线程安全的,而StringBuilder是线程不安全的,所以性能略高。通常情况下,创建一个内容可变的字符串,应该优先考虑使用StringBuilder

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值