java的String类


文章目录

  • java的StringBuilder类
  • StringBuilder类
  • StringBuilder和StringBuffer类中的常用方法
  • StringBuilder和StringBuffer的区别和联系


java的StringBuilder类

StringBuilder类

JDK中对StringBuilder类的基本介绍如下:

java的StringBuilder类_java


StringBuilder类在java.lang中,众所周知,在java.lang下的所有类都是可以直接调用的,不需要导包

接下来看一下StringBuilder类实现的构造器:

java的StringBuilder类_字符串_02


StringBuilder类中有无参和带参构造器,下面就举栗子说明一下吧:

package Test;

public class Test13 {
    public static void main(String[] args) {
        //创建StringBuilder的对象
        StringBuilder stringBuilder3 = new StringBuilder();
        //表面上调用的是StringBuilder的空构造器,实际底层上是对value数组进行初始化,长度为16
        StringBuilder stringBuilder2 = new StringBuilder(3);
        //表面上调用的是StringBuilder的有参构造器,。传入一个int类型的数据,实际底层上就是对value数组进行初始化,长度为你传入的数字
        StringBuilder stringBuilder = new StringBuilder("ABC");
        System.out.println(stringBuilder.append("def").append("aaaaaaaa").append("bbb").append("ooooo").toString());//链表调用的方式
    }
}
  • StringBuilder类下的append方法
public StringBuilder append(String str) {
        super.append(str);
        return this;
    }

说明:将布尔参数的字符串表示形式追加到序列中。
String是不可变字符串,不可变指的是在地址不变的情况下,把"abc"变成"abcdef"是不可能的
StringBuilder是可变字符串,在StringBuilder这个对象的地址不变的情况下,想把"abc"变成"abcdef"是可能的,直接追加即可

package Test;

public class Test14 {
    public static void main(String[] args) {
        StringBuilder sb= new StringBuilder();
        System.out.println(sb.append("abc") == sb.append("def"));
    }
}

StringBuilder和StringBuffer类中的常用方法

方法名

说明

返回值

append()

将布尔参数的字符串表示形式追加到序列中。

返回一个StringBuilder类型的值

delete()

删除此序列的子字符串中的字符,左闭右开

返回一个StringBuilder类型的值

deleteCharAt()

按此顺序删除指定位置的char。

返回一个StringBuilder类型的值

insert()

将布尔参数的字符串表示形式插入此序列中。

返回一个StringBuilder类型的值

replace()

用指定字符串中的字符替换此序列的子字符串中的字符。

返回一个StringBuilder类型的值

setCharAt(int index, char ch)

指定索引处的字符设置为传入的参数

返回一个StringBuilder类型的值

length()

返回字符串的长度

返回int类型的值

substring()

返回一个新的String,该字符串包含此字符序列中当前包含的字符的子序列。

返回String类型的值

package Test;

public class Test15 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("nihaojavasdfafasdfasdf");
        //增
        sb.append("这是梦想");
        System.out.println(sb);
        //删
        sb.delete(3, 6);//删除位置在[3,6)上的字符
        System.out.println(sb);
        sb.deleteCharAt(16);//删除位置在16上的字符
        System.out.println(sb);
        //改-->插入
        StringBuilder sb1 = new StringBuilder("$2345234536567575677567asdfasdf");
        sb1.insert(3, ",");//在下标为3的位置上插入,
        System.out.println(sb1);
        StringBuilder sb2 = new StringBuilder("$2342354wsfdasdfasdfasdfasdf");
        //改-->替换
        sb2.replace(3, 5, "你好呀");//在下标[3,5)位置上插入字符串
        System.out.println(sb2);
        sb.setCharAt(3, '!');
        System.out.println(sb);
        //查
        StringBuilder sb3 = new StringBuilder("asdfasdf");
        for (int i = 0; i < sb3.length(); i++) {
            System.out.println(sb3.charAt(i) + "\t");
        }
        System.out.println();
        //截取
        String str = sb3.substring(2, 4);//截取[2,4)返回的是一个新的String,对StringBuilder没有影响
        System.out.println(str);
        System.out.println(sb3);
    }
}

StringBuilder和StringBuffer的区别和联系

String类是一个不可变类,一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁
StringBuffer类则代表一个字符序列可变的字符串,可以通过append insert reverse setCharAt setLength等方法改变其内容,一旦生成了最终的字符串,调用toString方法将其转变为String
jdk1.5新增了一个StringBuilder类,和StringBuffer相似,构造方法和方法基本很相同,不同的是StringBuffer是线程安全的,而StringBuilder是线程不安全的,所以性能高,通常情况下,创建一个内容可变的字符串,应该优先考虑使用StringBuilder

java的抽象类