Java中String、StringBuffer与StringBuilder分析

一、 CharSequence

CharSequence指的就是字符串:String、StringBuffer与StringBuilder

二、String与StringBuffer类

1、String类的特点:

  • 每一个字符串的常量都属于一个String类的匿名对象,并且不可更改。
  • String有两个常量池:静态常量池和运行时常量池。
  • String类对象实例化建议使用直接赋值的形式,这样可以直接保存对象到对象池中。

2、String的弊端:内容不可更改。
3、StringBuffer可以实现字符串的修改,掌握以下几种StringBuffer提供的方法:

  • 构造方法:public StringBuffer();
  • 构造方法:public StringBuffer(String str); 接收初始化字符串的内容
  • 数据追加:public StringBuffer append(数据类型 变量); 相当于字符串中“+”操作
    实例:
public class DateDemo{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer("Hello ");
		change(buf);
		System.out.printIn(buf.toString());
	}
	public static void change(StringBuffer temp){
		temp.append("World!");
	}
}
// 执行结果:Hello World!

4、String中的“+”与StringBuffer中的append()的关系:

  • 所有的“+” 在编译之后都会变为StringBuffer中的append()方法。
  • String类对象变为StringBuffer可以依靠StringBuffer类的构造方法或者使用append方法。

5、所有的类对象都可以通过toString()方法将其变为String类型。
6、StringBuffer中常用的方法:

  • 插入数据:public StringBuffer insert(int offset,数据类型 b);
public class DateDemo{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer();
		buf.append(".cn").inset(0,"www.").insert(4,"gggko");
		System.out.printIn(buf)
	}
}
// 执行结果:www.gggko.cn
  • 删除指定范围的数据:public StringBuffer delete(int start,int end);
public class DateDemo{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer();
		buf.append("Hello World!").delete(6,12);
		System.out.printIn(buf);
	}
}
// 执行结果:Hello   !
  • 字符串反转:public StringBuffer reverse();
public class DateDemo{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer();
		buf.append("Hello World!").reverse();
		System.out.printIn(buf);
	}
}
// 执行结果:!dlroW olleH

三、StringBuilder类

StringBuilder类与StringBuffer类功能类似,StringBuilder类是在JDK1.5之后提供的,该类中的提供的方法与StringBuffer类的方法相同,两者最大的区别是StringBuffer类中的方法时线程安全的,全部使用了synchronized关键字,而StringBuilder是线程不安全的。

四、总结

面试题与笔试题:请解释String、StringBuffer与StringBuilder的区别?
String类是字符串的首选类型,其最大的特点是内容不允许修改;
StringBuffer与StringBuilder类的内容允许修改;
StringBuilder是在JDK1.0的时候提供的,属于线程安全的操作,StringBuilder是在1.5之后提供的,是线程不安全的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值