String,StringBuffer,StringBuilder的关系

1、为什么要有StringBuffer,StringBuilder

任何的字符串常量都是String对象,而且String的常量一旦
声明不可改变,如果改变对象内容,改变的是其引用的指向
而已。通常来讲String的操作比较简单,但是由于String的不
可更改特性,为了方便字符串的修改,提供StringBuffer和
StringBuilder类。StringBuffer 和 StringBuilder 大部分功能
是相同的。主要介绍StringBuffer

在这里插入图片描述
在这里插入图片描述

2、StringBuffer的一些用法

1)字符串反转:
public synchronized StringBuffer reverse() 
代码示例: 字符串反转
StringBuffer sb = new StringBuffer("helloworld"); 
System.out.println(sb.reverse());2)删除指定范围的数据:
public synchronized StringBuffer delete(int start, int end) 
代码示例: 观察删除操作
StringBuffer sb = new StringBuffer("helloworld"); 
System.out.println(sb.delete(5, 10));3)插入数据
public synchronized StringBuffer insert(int offset, 各种数据类型 b) 
代码示例: 观察插入操作
StringBuffer sb = new StringBuffer("helloworld"); 
System.out.println(sb.delete(5, 10).insert(0, "你好")); 

在这里插入图片描述

3、String 和 StringBuilder StringBuffer 区别:

 1、后两者包含了一些String没有的方法 比如reverse方法
 
 2、后两者是可变的,String是不可变的。String的每次拼
 接,都会产生新的对象,而后两者每次的拼接都返回的是
 this,即不创建新的对象
 
 3、StringBuilder 之间 StringBuffer 区别:
 StringBuilder和String 出现在单线程情况下
 StringBuffer因为有synchronized关键字 所以一般出现
 多线程情况下,是线程安全的。
 
 4、 StringBuilder和 String之间有啥区别!!!
 String的拼接 +  会被优化  优化为StringBuilder . append了 
 在循环当中 不可以使用String直接进行拼接  这样会产生大
 量的临时对象,包括优化之后StringBuilder对象。
 应这样做:
 public class TestDemo2 {
    public static void main(String[] args) {
        String str = "abc";
        StringBuilder sb = new StringBuilder();
        sb.append(str);
        for(int i = 0;i < 10;i++) {
            str = sb.append(i).toString();
        }
        System.out.println(str);
    }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值