String类与StringBuilder类

本文详细介绍了Java中的String类和StringBuilder类,强调了String的不可变性质可能导致的性能问题,以及StringBuilder的可变特性及其在频繁修改字符串时的优势。
摘要由CSDN通过智能技术生成


前言

String类和StringBulider类是java中常见的两种类。


一、String类

String类概述

1 String 类在 java.lang 包下,所以使用的时候不需要导包

​ 2 String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象

​ 3 字符串不可变,它们的值在创建后不能被更改
在这里插入图片描述

String类方法小结

String类的常用方法 :

​ public boolean equals(Object anObject) 比较字符串的内容,严格区分大小写

​ public boolean equalsIgnoreCase(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 对象中的内容是可变的

二者区别

  • **String类:**内容是不可变的
  • **StringBuilder类:**内容是可变的

StringBuilder类的构造方法

方法名说明
public StringBuilder()创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str)根据字符串的内容,来创建可变字符串对象

StringBuilder常用的成员方法

public StringBuilder append(任意类型)添加数据,并返回对象本身
public StringBuilder reverse()返回相反的字符序列

代码示例

案例需求 :

​ 定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,

​ 并在控制台输出结果。例如,数组为int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3]

public class StringBuilderTest01 {
    public static void main(String[] args) {
        //定义一个 int 类型的数组,用静态初始化完成数组元素的初始化
        int[] arr = {1, 2, 3};

        //调用方法,用一个变量接收结果
        String s = arrayToString(arr);

        //输出结果
        System.out.println("s:" + s);

    }

    //定义一个方法,用于把 int 数组中的数据按照指定格式拼接成一个字符串返回
    /*
        两个明确:
            返回值类型:String
            参数:int[] arr
     */
    public static String arrayToString(int[] arr) {
        //在方法中用 StringBuilder 按照要求进行拼接,并把结果转成 String 返回
        StringBuilder sb = new StringBuilder();

        sb.append("[");

        for(int i=0; i<arr.length; i++) {
            if(i == arr.length-1) {
                sb.append(arr[i]);
            } else {
                sb.append(arr[i]).append(", ");
            }
        }

        sb.append("]");

        String s = sb.toString();

        return  s;
    }
}

总结

String类和StringBuilder类都是用于处理字符串的类,但它们有一些区别。

String类是不可变类,即一旦创建了一个字符串对象,就不能更改该对象的内容。每次对字符串进行操作时,都会创建一个新的字符串对象,这会导致大量的对象创建和内存占用。所以如果需要频繁对字符串进行修改操作,使用String类会有较大的性能损耗。

StringBuilder类是可变类,它提供了对字符串内容进行修改的方法,而不会创建新的对象。可以通过append()方法在字符串的末尾添加内容,通过insert()方法在指定位置插入内容,通过delete()方法删除指定位置的内容,通过replace()方法替换指定位置的内容等。这些操作都是在原对象上进行的,所以性能比String类要好。

总结来说:

  • 如果字符串内容不需要修改,或者修改次数很少,可以使用String类,因为它具有不可变性,更安全。
  • 如果字符串内容需要频繁修改,可以使用StringBuilder类,因为它具有可变性,性能更好。

需要注意的是,String类和StringBuilder类虽然都可以进行字符串操作,但它们的方法和用法有所差异,需要根据实际需求选择合适的类来处理字符串。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值