【JAVA】对于StringBuilder和StringBuffer的理解

前言

本篇文章介绍了StringBuilder和StringBuffer的一些基本的概念,结合我自身的理解谈谈这两个对象。在这里我旨在用最浅显的语言介绍这两个对象。

StringBuilder

StringBuilder产生的背景

首先我们知道,如果使用String字符串拼接,比如“abc” +"def",诚然给我们带来了很大的便利。但是!其产生了一个十分重要的后果。就是每次连接字符串都会产生新的String对象,这样带来了低效率的后果。因此,这个时候StringBuilder就出现了。

StringBuilder是什么?

StringBuilder是一个类,其具有String类所不具备的一些方法。它的出现很好的解决了String拼接带来的低效率问题。

其在内存的布局如下。首先stringbuilder引用指向了堆区中的new StringBuilder()对象。常量池中存的是字符串“abc”。但是在new StringBuilder()对象取出了常量池中的“abc”,然后有一个数组存放了abc。接着stringbuilder的所有操作都是对这个数组进行操作了。返回的都是this这个对象。并不会产生其他的String对象了。

因此我们可以说String不可变,但是StringBuilder和StringBuffer是可变的。

 StringBuilder的方法

 StringBuilder的方法有很多。常见的方法有:

StringBuff append(String str)  

在尾部追加,相当于String的+=,可以追加:boolean、char、char[]、 double、float、int、long、Object、String、StringBuff的变量

 例如如下代码。用append追加了不同类型的数据。

public class Test {
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder("abc");
        stringBuilder.append("123").append(10);
        System.out.println(stringBuilder);
    }
}

结果如下所示:

 StringBuffer

 StringBuffer是StringBuilder的前身。这两个类大致相同。 StringBuffer效率稍有些低,但允许采用多线程的方式执行添加或删除字符的操作。当然如果所有字符串在一个单线程中编辑 ,则应该用 StringBuilder 替代它。 这两个类的 API(Application Programming Interface,应用程序编程接口)是相同的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值