String 和 StringBuffer的区别

本文详细解析了Java中的String与StringBuffer类之间的区别与联系,包括它们的关系、转换方式、如何修改StringBuffer实例内容以及相关成员方法的使用。此外,还介绍了StringBuffer实例的容量概念及其构造方法。

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

1、与String的关系

   A、是两个不同的类,String实例一旦创建完毕,就不能再修改起内容。而StringBuffer实例则可修改实例所包含的字符序   列。

   B、两者间的转换:

      *从一个StringBuffer实例可以通过类String的构造方法构造出一个具有相同字符序列的String实例。

       格式如下:new  String(StringBuffer实例的引用);

       另外还可以通过StringBuffer的成员方法来完成相同的转化。

    例如:public String toString();

              设b为StringBuffer类型的变量,则:String s=String(b);String s=b.toString();具有相同效果,均会生成与b所指向的StrngBuffer实例内容相同的String实例,并将其指向String变量s。

      *反过来,从String实例也可以构造出相应的具有相同字符序列的StringBuffer实例。其方法是通过StringBuffer的构造方法:

       public StringBuffer(String str)

    例如:StringBuffer b=new StringBuffer("abcd");

2、修改StringBuffer实例内容

   A、通过StringBuffer的成员方法 public int length() 获得StringBuffer实例的字符串长度。

   B、通过StringBuffer的成员方法:public char charAt(int index)得到字符序列中指定下标的字符。

   C、通过StringBuffer的成员方法:public void setCharAt(int index,char ch)可以将StringBuffer实例的字符序列中指定下标的字符设置为指定的字符。

    例如:StringBuffer b=new StringBuffer("that");

              b.setCharAt(0,'c');//将b所指向的StringBuffer势力的字符序列从that变为char

   D、几种常用的修改StringBuffer实例的成员方法

      *append:在字符串序列之后添加新的内容

    例如:StringBuffer b=new StringBuffer(“Pretty”);

              b.append("good!");//b的字符序列变为Pretty good!

      *delete:删除字符串序列中指定的子序列

    例如:StringBuffer b=new StringBuffer(“Those”)

              b.delete(2,4);//删除字符序列Those中的下标为2和3(4-1)的字符

      *insert:在指定的位置给字符序列插入新的内容

        例如:StringBuffer b=new StringBuffer(“1+=2”);

          b.insert(2,1);//在“1+=2”的下标为2的字符之前插入整数1

      *replace:替换指定的下标字符,声明方法为:public StringBuffer replace(int start,int end,String str)

    例如:StringBuffer b=new StringBuffer(“25*??=625”);

              b.replace(3,5,"25");//将指定的子串(从下标为start到下标为(end-1)的子串)替换成心子串

      *reverse:将StringBuffer实例的字符序列变成其倒序的字符序列,声明方法为:public StringBuffer reverse()

    例如:StringBuffer b=new StringBuffer(“Pretty”);

          b.reverse();//将b所指向的StringBuffer实例的内容从Pretty变为ytterP

3、StringBuffer实例的容量:StringBuffer实例所占用的内存大小称为StringBuffer实例的容量。可以通过StringBuffer的成员方法public int capacity()获得其实例的容量

   A、StringBuffer具有三种构造方法,这三种构造方法生成的StringBuffer实例的容量大小如下表:

构造方法

字符序列长度

内存容量

public StringBuffer()

0

16

Public StringBuffer(int length)

0

Length

public StringBuffer(String str)

Str中的字符长度

Str中的字符序列长度加16

   B、在当前的StringBuffer实例容量容纳不下变化后的字符序列时,StringBuffer实例会重新申请内存,提高内存容量。当调用了类StringBuffer的成员方法

public void ensureCapacity(int minimumCapacity)并且其中的参数minimymCapacity比当前的StringBuffer实例容量大的情况下,StringBuffer 实例也会重新申请内存,提高内存容量。新的内存容量是下面的两个参数中较大的数:①minimumCapacity;②(当前StringBuffer实例容量)*2+2。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值