【Java常用类】String和StringBuffer类(下)

63 篇文章 4 订阅

在Java中,由于String 类是final类型的,所以使用String定义的字符串是一个常量因此它且创建,其内容和长度是不可改变的。 如果需要对一个字符串进行修改,则只能创建新的字符串。为了便于对字符串进行修改,在JDK中提供了一个StringBuffer类(也致字符串缓冲区)来操作字符串。StringBuffer 类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在其中添加或删除字符时,所操作的都是这个字符容器,因此并不会产生新的StringBuffer对象。

jdk1.8帮助文档在上期有

eg:

public class Demo01 {
	public static void main(String[] args) {
		System.out.println("1,添加-------------------------------");
		add();
		System.out.println("2.修改-------------------------------");
		update();
		System.out.println("3.删除-------------------------------");
		delete();
	}
	public static void add() {
		StringBuffer sb = new StringBuffer();
		sb.append("ABC");
		System.out.println("append添加结果:"+sb);
		sb.insert(3,"DE");
		System.out.println("insert添加结果:"+sb);
		
	}
	public static void update() {
		StringBuffer sb = new StringBuffer("ABAAA");
		sb.setCharAt(2, 'C');
		System.out.println("替换指定位置字符结果:"+sb);
		sb.replace(3, 5, "DE");
		System.out.println("替换指定位置字符结果:"+sb);
		System.out.println("字符串翻转结果:"+sb.reverse());
	}
	public static void delete() {
		StringBuffer sb = new StringBuffer("ABCDEFG");
		sb.delete(3, 7);
		System.out.println("删除指定位置结果:"+sb);
		sb.deleteCharAt(2);
		System.out.println("删除指定位置结果:"+sb);
		sb.delete(0, sb.length());
		System.out.println("清空缓冲区结果:"+sb);

	}
}

运行结果:

在上例中涉及StringBuffer类的很多方法,其中append( )和inser()方法是最常用的,并且这两个方法有很多重载形式,它们都用于添加字符。不同的是,append()方法始终将这些字符添加到缓冲区的末尾,而insert()方法则可以在指定的位置添加字符。另外,StringBuffer对象的delete()方法用于删除指定位置的字符,包含起始索引,不包含结束索引,setCharAt()和replace()方法用于替换指定位置的字符。

StringBuffer类和String类有很多相似之处,初学者在使用时很容易混淆。接下来针对这两个类进行对比,简单归纳一下两者的不同,具体如下:

①Sring类定义的字符串是常量,一旦创建后内容和长度都是无法改变的。StringBuffer表示字符容器,其内容和长度可以随时修改。在操作字符串时,如果该字符串仅用于表示数据类型。则使用String类即可,但是如果需要对字符串中的字符进行增删操作,则使用StringBuffer类。

②String类重写了Object类的equals()方法,而StringBuffer 类没有重写Object类的equals()方法。具体示例如下:

        String s1 = new String("abc");
		String s2 = new String("abc");
		System.out.println(s1.equals(s2));//打印结果为turn
		
		StringBuffer sb1 = new StringBuffer("abc");
		StringBuffer sb2 = new StringBuffer("abc");
		System.out.println(sb1.equals(sb2));//打印结果为false

③String 类对象可以用操作符+进行连接,而StringBuffer 对象之间不能,具体示例
 

        String s1 = "a";
		String s2 = "b";
		String s3 = s1 + s2;//合法
		System.out.println(s3);//打印输出ab
		StringBuffer sb1 = new StringBuffer("a");
		StringBuffer sb2 = new StringBuffer("b");
		StringBuffer sb3 = sb1 + sb2;//编译错误

String类跟StringBuffer类的区别;

String 类创建的字符串不可修改,StringBuffer 创建的字符串可修改
 

感谢观看!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值