Java学习总结:31(StringBuffer类)

StringBuffer类

在Java中String类不适合使用于频繁修改字符串的操作上(因为其字符串常量一旦声明则不可改变,只能改变字符串对象,改变的是其内存地址的指向),所以我们可以使用StringBuffer类方便用户进行内容的修改。
例:观察StringBuffer类的使用

package Project.Study.StringBufferClass;

public class Test1 {
    public static void main(String []args){
    //String类可以直接赋值,但是StringBuffer类不行
        StringBuffer buf=new StringBuffer();	//实例化StringBuffer类对象
        buf.append("Hello ").append("World").append("!!!");	//append()方法和String类的“+”作用类似
        change(buf);							//引用传递
        System.out.println(buf);
    }
    public static void change(StringBuffer temp){//接收StringBuffer引用
        temp.append("\n").append("Hi").append("!!!");//修改内容
    }
}
//结果:
//Hello World!!!
//Hi!!!

两个类的定义结构
我们可以发现String类和StringBuffer类都是CharSequence接口的子类,也就是说这两个类的对象都可以利用自动向上转型的操作为CharSequence接口实例化。

例:

package Project.Study.StringBufferClass;

public class Test2 {
    public static void main(String []args){
        CharSequence seq="Hello World!!!";
        //将String类的实例化对象向上转型为CharSequence接口对象
        System.out.println(seq);	//String类覆写的toString()
    }
}
//结果:
//Hello World!!!

需要注意的是,虽然String和StringBuffer类都属于CharSequence接口的子类,但是这两个类对象是不能直接转换的。

一:将String类转换为StringBuffer类对象

1.利用StringBuffer类的构造方法(public StringBuffer(String str))

例:

package Project.Study.StringBufferClass;

public class Test2 {
    public static void main(String []args){
        StringBuffer buf=new StringBuffer("Hello World!!!");
        //利用该构造方法可以将传递进来的String类对象实例化为StringBuffer类对象
        System.out.println(buf);
    }
}
//结果:
//Hello World!!!

2.利用StringBuffer类的append()方法(public StringBuffer append(String str))

例:

package Project.Study.StringBufferClass;

public class Test2 {
    public static void main(String []args){
        StringBuffer buf=new StringBuffer();
        buf.append("Hello World!!!");		//String变为StringBuffer
        System.out.println(buf);
    }
}
//结果:
//Hello World!!!

二.将String Buffer类变为String

1.利用toString()方法可以将StringBuffer转换为String

例:

package Project.Study.StringBufferClass;

public class Test3 {
    public static void main(String []args){
        StringBuffer buf=new StringBuffer("Hello World!!!");    //String变为StringBuffer
        String str=buf.toString();                              //任何类都具备toString()方法
        System.out.println(str);
    }
}
//结果:
//Hello World!!!

事实上所以的类中都会继承Object类的toString()方法,所以所有的类对象都可以转换为String类对象。

2.利用String类的构造方法(public String(StringBuffer buffer))实现StringBuffer与String的转换

例:

package Project.Study.StringBufferClass;

public class Test4 {
    public static void main(String[]args){
        StringBuffer buf=new StringBuffer("Hello World!!!");	//String变为StringBuffer
        String str=new String(buf);			//String类构造,开辟新内存
        System.out.println(str);
    }
}
//结果:
//Hello World!!!

三.由于String与StringBuffer都表示字符串,所以在String类里面也提供了一个和StringBuffer比较的方法:public boolean contentEquals(StringBuffer sb)

package Project.Study.StringBufferClass;

public class Test5 {
    public static void main(String[]args){
        StringBuffer buf=new StringBuffer("Hello");
        System.out.println("Hello".contentEquals(buf));
    }
}
//结果:
//true

注意:此方法比较时会区分大小写

StringBuffer类常用的操作方法

No.方法类型描述
1public StringBuffer append(数据类型变量)普通数据追加操作
2public StringBuffer reverse()普通字符串反转操作
3public StringBuffer insert(int offset,数据类型变量)普通在指定位置追加内容
4public StringBuffer delete(int start,int end)普通删除指定索引范围的内容

例:字符串反转操作

package Project.Study.StringBufferClass;

public class Test6 {
    public static void main(String[]args){
        StringBuffer buf=new StringBuffer("Hello World");
        System.out.println(buf.reverse());					//使用reverse()方法反转字符串
    }
}
//结果:
//dlroW olleH

例:在指定索引位置增加数据

package Project.Study.StringBufferClass;

public class Test7 {
    public static void main(String[]args){
        StringBuffer buf=new StringBuffer("Hello");
        //首先在最前面加上字符串,然后在指定位置再追加字符串
        buf.insert(0,"Now!").insert(9," World");
        System.out.println(buf);
    }
}
//结果:
//Now!Hello World

例:删除部分数据

package Project.Study.StringBufferClass;

public class Test8 {
    public static void main(String[]args){
        StringBuffer buf=new StringBuffer("Hello World!!!");
        System.out.println(buf.delete(5,11));
    }
}
//结果:
//Hello!!!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值