【博学谷学习记录】超强总结,用心分享 | String、StringBuilder和StringBuffer

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、String

String是什么

       String类代表字符串,Java程序中的所有文字(例如:“abc”)都被实现为此类的实例。

String特点
  • Java程序中所有的双引号字符串,都是String类的对象。
  • 字符串不可变,它们的值在创建后不能被修改。
  • 虽然String的值是不可变的,但是他们可以被共享
String的构造方法
方法名说明
public String()创建一个空白字符串对象,不含有任何内容
public String(char[] chs)根据字符数组来创建字符串对象
public String(String original)根据传入的字符串对象来创建字符串对象
String s = “abc”直接赋值的方式创建字符串对象,内容就是abc
三种创建字符串对象的区别:
  • 使用“”双引号创建的字符串,只要字符序列相等(顺序和大小写),无论在程序代码中出现几次,JVM都只会创建一个String对象。并在字符常量池中维护
  • 通过new创建的字符串对象,每一次new都会申请一个 内存空间,虽然内容相同但是地址值不同
    双引号创建的字符串对象,在字符串常量池中存储,通过构造方法创建的字符串对象,在堆内存中存储
字符串比较
  • 使用==比较
           基本数据类型:比较的是数据值是否相同
           引用数据类型:比较的是地址值是否相同
字符串常用方法
方法名说明
public boolean equals(Object anObject)比较字符串内容,严格区分大小写
public boolean equalslgnoreCase(String anOtherString)比较字符串内容,忽略大小写
public int length()返回此字符串的长度
public char charAt(int index)返回指定索引处的char值
public char[] toCharArray()将字符串拆分为字符数组后返回
public String substring(int beginIndex,int endIndex)根据开始和结束索引进行截取,得到新的字符串(包含头,不包含尾)
public String substring(int beginIndex)从传入的索引出截取,截取到末尾,得到新的字符串
public String replace(CharSequence target, CharSequence replacement)使用新值,将字符串中的旧值替换,得到新的字符串
public String[] split(String regex)根据传入的规则切割字符串,得到字符串数组

二、StringBuilder

什么是StringBuilder

       StringBuilder是一个可变的字符串类,我们可以将其看为一个容器

StringBuilder构造方法
方法名说明
public StringBuilder()创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str)根据字符串的内容创建一个可变字符串对象
StringBuilder常用的方法
方法名说明
public StringBuilder append(任意类型)添加数据,返回对象本身
public StringBuilder reverse()返回相反的字符序列
public int length()返回长度
public String toString()通过toString()就可以实现把StringBuilder转换为String

StringBuffer

StringBuffer是什么?

       一个线程安全的可变字符串

StringBuffer构造方法
方法名说明
public StringBuffer创建一个容量为16的StringBuffer对象
public StringBuffer(int capacity创建一个容量为capacity 的StringBuffer对象
public StringBuffer(String str)创建指定字符串内容的字符串。末尾添加16字符容量
public StringBuffer(CharSequence seq)创建指定字符串内容的字符串,末尾添加16字符容量
StringBuffer常用的方法
方法名说明
public StringBuffer append(任意类型)添加数据,返回对象本身
public char charAt()返回指定位置的chat值
public int capacity()返回容量
public String toString()通过toString()就可以实现把StringBuffer 转换为String

三者相互转换

  • String、StringBuffer之间相互转换
//通过构造方法就可以实现把String转换为StringBuilder
public StringBuilder(String s):
//通过toString()就可以实现把StringBuilder转换为String
public String toString():
  • String、StringBuilder之间相互转换
//通过构造方法就可以实现把String转换为StringBuffer
public StringBuffer(CharSequence seq);
//通过toString()就可以实现把StringBuilder转换为String
public String toString():

区别

  • 基本区别:
           String的对象不可变,StringBuffer和StringBuilder的对象是可变的
  • 性能区别:
           操作少量的数据用:String;
           单线程操作字符串缓冲区下操作大量数据:StringBuilder
           多线程操作字符串缓冲区 下操作大量数据:StringBuffer
  • 线程安全 :
           String、StringBuffer是线程安全的,StringBuilder是线程不安全的(所以如果程序是单线程的使用StringBuilder效率高,如果是多线程使用StringBuffer或者String)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值