java的StringBuilder类

java的String类

文章目录

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

java的StringBuilder类

StringBuilder类

JDK中对StringBuilder类的基本介绍如下:
java的StringBuilder类_第1张图片
StringBuilder类在java.lang中,众所周知,在java.lang下的所有类都是可以直接调用的,不需要导包
接下来看一下StringBuilder类实现的构造器:
java的StringBuilder类_第2张图片
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的抽象类

你可能感兴趣的:(java,java)