Java中Srting,StringBuffer,StringBuilder三者的区别


前言:
字符串是我们在Java开发中最常见用的一种数据,它用包装类String表示, string是不可修改的, stringBuffer是可修改的,安全高,但是效率低,而 stringBuilder则是可修改的,安全低,效率高。

一、Srting

1.1 定义

String是不可变的字符串,String类表示:public final class String

String类
因此,String 存储的字符串存储在 char数组中: value[ ], 这个数组使用final修饰, value的数组无法改变, String也就是一个不可变的字符串:

例如: String str = “abc”;

str = “abc”+ “d”;

“abc” 这个字符串是不可变的, str只是"abc"字符串对象的引用, str可变, str=“abc”;
str指向的"abc"对象的空间, str=“abc”+“d”; 产生三块空间, “abc”,“d”,“abcd”. str
指向的"abcd"空间
String类空间

1.2 创建字符串

1.通过new 关键字, 构造方法

2.直接赋值,推荐

​ String 变量=字符串常量对象;
在这里插入图片描述
在这里插入图片描述

字符串常量对象: “内容”,不仅仅是字符串值,而且还是一个字符串对象

在这里插入图片描述

1.3 字符串常量池String pool

只存储字符串常量,双引号引起的存在字符串常量池;

特征:字符串唯一的

在jdk1.7之后,字符串常量池是位于堆中

存放一个字符串:

  1. 从字符串常量池中查找是否存在该字符串空间

  2. 如果有, 直接返回找到的字符串常量池中的对象, 共享的

  3. 如果没有, 在字符串常量池创建这个对象

二、StringBuffer

2.1 构造方法

在这里插入图片描述

2.2 常用方法

2.2.1 追加: 可以追加任意的数据类型
在这里插入图片描述
2.2.2 插入: 在指定下标插入内容
在这里插入图片描述
2.2.3 刪除:
在这里插入图片描述
2.2.4 替换:
在这里插入图片描述
2.2.5 反转:
在这里插入图片描述
2.2.6 修改指定位置字符:
在这里插入图片描述
2.2.7 把StringBuffer转换为String:

在这里插入图片描述

三、StringBuilder

3.1 常用方法

3.1.1 附加序列:
在这里插入图片描述
3.1.2 转换为char
在这里插入图片描述

其实,StringBuffer和StringBuilder的常用方法是差不多的。

四、区别

字符串类:

String: 不可变的字符串, 频繁进行+操作, 在堆中创建String对象, 效率比较低, 频繁修改这个字符串,第一个String不提供相关的方法, 原因: String是一个不可变的字符串, 效率低;

对字符串进行频繁修改操作,jdk提供了StringBuilder/StringBuffer: 可变的字符串

StringBuffer与StringBuilder的区别:

StringBuffer是一个线程安全的, 所有的方法添加了synchronized关键字, 同步方法, 效率低

StringBuilder是一个线程不安全的, 所有方法都是非同步方法, 效率高

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小温豌豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值