JAVA String与StringBuilder

本文介绍了Java中的String对象及其特性,包括创建方式、常用方法如equals、length等,以及StringBuilder的可变性、内置缓冲区和高效拼接。同时对比了两者在性能和线程安全性的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String

代表的是字符串

特点

  1. 凡是带双引号的都是String对象
  2. 字符串是常量,他们的值在创建之后就不能被改变
  3. String对象是不可变的,所以可以共享

创建

  1. String();
  2. String(String s);
  3. String(chat [] char);
  4. String(byte[] byte);
  5. String(char[] chars,int offset,int count); 将char数组从offset索引开始,将count个数组元素转为字符串
  6. String(byte[] byte,int offset,int count);

方法

判断方法
  1. boolean equals(Object) 判断字符串内容是否一样
  2. boolean equalsIgnoreCase(String s) 判断字符串内容是否一样,忽略大小写
获取方法
  1. int length() 获取字符串长度
  2. String concat(String s)拼接字符串,返回新串
  3. char charAt(int index) 根据索引获取对应的字符
  4. int indexOf(String s) 获取指定字符在字符串中第一次出现的索引位置
  5. String subString(int beginIndex) 从beginIndex开始截取字符串到最后
  6. String subString(int beginIndex,int endIndex) beginIndex开始到endIndex截取字符串,含头不含尾
转换方法
  1. char[] toCharArray() 将字符串转换为char数组
  2. byte [] getBytes() 将字符串转换为byte数组
  3. byte[] getBytes(String charsetName) 按照指定的编码格式将字符串转换为byte数组
  4. String replace(c1,c2) 将c1替换成c2
分割方法
  1. String[] split(String regex) 按照指定规则分割字符串

1.String[] split(String regex)->按照指定的规则分割字符串
注意:regex写的是正则表达式 -> . 在正则表达式中代表任意一个字符

public class Demo08String {
    public static void main(String[] args) {
        String s = "abc,txt";
        String[] split = s.split(",");
        for (int i = 0; i < split.length; i++) {
            System.out.println(split[i]);
        }

        System.out.println("===============");
        String s2 = "haha.hehe";
        //String[] split1 = s2.split(".");任意字符不能分割。切不出来 需要转意。
        String[] split1 = s2.split("\\.");
        for (int i = 0; i < split1.length; i++) {
            System.out.println(split1[i]);
        }
    }
}

其他方法
  1. boolean contains(String s) 判断老串儿中是否包含指定的串儿
  2. boolean endsWith(String s)判断老串儿是否以指定的串儿结尾
  3. boolean startsWith(String s)判断老串儿是否以指定的串儿开头
  4. String toLowerCase()将字母转成小写
  5. String toUpperCase()将字母转成大写
  6. String trim()去掉字符串两端空格

StringBuilder

可变的字符序列,底层数组没有被final修饰

特点

自带缓冲区,拼接字符串不会随意产生新对象
1.概述:一个可变的字符序列,此类提供了一个与StringBuffer兼容的一套API,但是不保证同步(线程不安全,效率高)
StringBuilder与StringBuffer除了对象不一样剩下都一样
2.作用:主要是字符串拼接
3.问题:
a.刚讲完String,String也能做字符串拼接,直接用+即可,但是为啥还要用StringBuilder去拼接呢?
b.原因:
String每拼接一次,就会产生新的字符串对象,就会在堆内存中开辟新的空间,如果拼接次数多了,会占用内存,效率比较底

StringBuilder,底层自带一个缓冲区(没有被final修饰的byte数组)拼接字符串之后都会在此缓冲区中保存,在拼接的过程中,不会随意产生新对象,节省内存

4.StringBuilder的特点:
a.底层自带缓冲区,此缓冲区是没有被final修饰的byte数组,默认长度为16
b.如果超出了数组长度,数组会自动扩容
创建一个新长度的新数组,将老数组的元素复制到新数组中,然后将新数组的地址值重新赋值给老数组
c.默认每次扩容老数组的2倍+2
如果一次性添加的数据超出了默认的扩容数组长度(2倍+2),比如存了36个字符,超出了第一次扩容的34,就按照实际数据个数为准,就是以36扩容

常用方法(返回类型 方法())
  1. StringBuilder append(任意类型) 字符串拼接,返回自己
  2. StringBuilder reverse() 反转字符串,返回自己
  3. String toString() 将StringBuilder转成String

String:拼接字符串效率低,每拼接一次,都会产生一个新的字符串对象,耗费内存资源
StringBuilder和StringBuffer区别:
a.相同点:用法一样,作用一样
b.不同点:StringBuilder:拼接效率比StringBuffer高,线程不安全
StringBuffer:效率比较底,线程安全
拼接效率:StringBuilder>StringBuffer>String

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值