String与StringBuffer、StringBuilder

String与StringBuffer的区别,String的内容是不能修改的,只能改变引用地址的位置,而StringBuffer的内容是可以改变的。

StringBuffer实现的接口CharSequence
CharSequence cs=“hello”; //子类对象为父类实例化
StringBuffer的构造方法 public StringBuffer(CharSequence seq) ;
注意:String与StringBuffer都属于CharSequence 接口子类,但是这两个类的对象不能够直接转换。
将String变成StringBuffer:利用StringBuffer的构造、append()方法
代码实现:

public class Test02 {
	public static void main(String[] args) {
		String str="hello";
		//利用StringBuffer的构造方法将String转换为StringBuffer
		StringBuffer buf=new StringBuffer(str);
		System.out.println(buf);
		System.out.println("-----------");
		//利用StringBuffer的append()方法将String转换为StringBuffer
		buf.append(str);
		System.out.println(buf);
	}
}

将StringBuffer变成String:所有对象都有一个将对象变成String的方法,使用toString();

StringBuffer的特有方法
1、支持字符串反转
public StringBuffer reverse()
2、删除指定范围的数据
public StringBuffer delete(int start, int end)
3、插入数据
public StringBuffer insert(int offset,数据类型 数据)

public class Test02 {
	public static void main(String[] args) {
		String str="hello";
		//利用StringBuffer的构造方法将String转换为StringBuffer
		StringBuffer buf=new StringBuffer(str);
		System.out.println(buf);
		System.out.println("-----------");
		//利用StringBuffer的append()方法将String转换为StringBuffer
		buf.append(str);
		System.out.println(buf);
		//reverse()字符串逆转
		System.out.println(buf.reverse());
		//delete(1, 3)删除字符串索引从1到3的字符(包前不包后)
		System.out.println(buf.delete(1, 3));
		//insert(2, "你好")从字符串索引2的位置插入"你好"
		System.out.println(buf.insert(2, "你好"));
	}

}

请解释String、StringBuffer、StringBuilder之间的区别?

1、String内容不可以修改,StringBuffer与StringBuilder的内容可以修改
2、StringBuffer的方法都是由synchronized关键字修饰,属于同步方法线程安全。
StringBuilder属于异步方法,线程不安全

1、相同点:
String,StringBuffer,StringBuilder最终底层存储与操作的都是char数组,StringBuffer和StringBuilder都继承了AbstractStringBuilder

2、不同点:
String:char数组是final的,不可变,修改String时实际上是new一个新String对象返回,线程安全,频繁的增删操作时不建议使用
StringBuffer:线程安全(StringBuffer中的方法中加synchronized锁),多线程建议使用这个,修改值时实际上是修改底层的char数组,相比String,开销更小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值