String、StringBuilder、StringBuff

String类型和StringBuilder、StringBuff有本质上的区别:String类型的字符串具有不可变性,它所具有的方法无法修改原来的字符串,只能用新的字符串来接受修改结果,StringBuilder、StringBuff这两种字符串类型,可以对原来的字符串本身进行修改,但StringBuilder和StringBuff也有区别,StringBuilder的方法没有synchronized修饰,所以具有“线程”不安全性,但性能好。而StringBuff的方法有synchronized修饰,所以“线程”安全,但性能差。日常在我们要对字符串进行一些修改操作时,我们不需要考虑“线程”安全,所以我们一般会选择使用StringBuilder类型的字符串。

        String s1 = "X";
		s1 = s1.concat("a");// 连接字符串,产生新的字符串
		System.out.println(s1);

		StringBuilder s2 = new StringBuilder("x");
		s2.append("a");// 在当前字符串的“尾部追加”字符串
		System.out.println(s2);

        StringBuffer s3 = new StringBuffer("x");
		s3.append("a");// 在当前字符串的“尾部追加”字符串
		System.out.println(s3);
                                       图1

如图1中,如果字符串是String类型,想要在原字符串后再加新字符串,只能使用concat()方法将新字符串连接在原字符串后面,并且生成新字符串,但如果使用StringBuilder和StringBuff类型的字符串,则可以直接使用append()方法在当前的字符串尾部直接添加字符串。

        String s="abcd";
		s.replace("a", "A");
		System.out.println(s);//字符仍为原内容
		
		StringBuilder s1=new StringBuilder(s);
		s1.replace(1,2, "BC");//将下标1-下标3(不含)的字符串内容替换为"BC"
		System.out.println(s1);
                                           图2

如图2中,当字符串为String类型时,因为String类型不可变,所以在replace()方法后,输出原字符串没有发生改变,但当字符串为StringBuilder类型时,使用replace()方法,可以将指定下标范围的内容替换为目标字符串。

        StringBuilder s = new StringBuilder();
		s.append("如果我是一只鱼").delete(0, 3)// 按照下标范围删除字符串内容
				.deleteCharAt(2);// 按照下标删除目标字符
                                         图3

图3中有StringBuilder的append()、delete()、deleteCharAt()方法:

append():该方法是往字符串中继续添加字符串;

delete():该方法是按照下标范围删除字符串的内容

deleteCharAt():该方法是按照下标删除字符

        StringBuilder s = new StringBuilder("abcd");
		// insert():在指定下标位置,插入“新内容”
		s.insert(2, "bbbbb").insert(2, true).insert(2, Math.PI);
        // 字符串逆序
		StringBuilder s3 = new StringBuilder("abcde");
		s3.reverse();
                                         图4

图4中使用StringBuilder的insert()和resverse方法

insert():该方法可以在指定的下标位置,插入“新的内容”。这个方法插入的类型可以是字符串,也可以是其他数据类型。

reverse():该方法可以实现字符串的逆序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值