Java基础String、StringBuilder类

209 阅读3分钟

「这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战

1 String类

1.1 String概括

  • String 类 在 java.lang 包下,所以使用的时候不需要导包
  • java程序中所有的双引号字符串,都是String这个类的对象
  • 特点:字符串 不可变 ,它们的值在创建后不可改变 字符串的特点:
    1:字符串的内容永不可变
    2:正是因为字符串不可改变,所以字符串是可以共享使用的。
    3:字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组。

1.2 String构造方法

方法名说明
public String()创建一个空字符串对象,不包含任何内容
public String(chas[] chs)根据字符数组内容,来创建字符串对象
public String(byte[] bys)根据字节数组内容,来创建字符串对象
String s = "abc";直接赋值的方法创建字符串对象,内容就是abc
  • 推荐使用直接赋值的方式

1.3 String对象的区别

  • 1.通过 new 创建字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同 在这里插入图片描述
  • 2.以 “ ” 方式给出的字符串,只要字符串的序列相同(顺序和大小写),无论在程序中出现多少次,JVM都只会建立一个String对象,并在字符串池维护 在这里插入图片描述
  • 内存 在这里插入图片描述在这里插入图片描述

1.4 String字符串比较

  • 使用 双等号 作比较
    • 基本类型:比较的是 数据值 是否相同
    • 引用类型:比较的是 地址值 是否相同
  • 字符串是对象,它比较 内容 是否相同,是通过一个方法来实现的,这个方法叫做: equals()
  • 范例:
public class Demo{
    public static void main(String[] args){
        //构造方法的方式得到对象
        char[] chs = {'a','b','c'};
        String s1 = new String(chs);
        String s2 = new String(chs);
        //直接赋值的方法得到对象
        String s3 = "abc";
        String s4 = "abc";

        System.out.println(s1.equals(s2)); //true
        System.out.println(s1.equals(s3)); //true
        System.out.println(s3.equals(s4)); //true
    }
}

2 StringBuilder可变字符串类

  • StringBuilder是一个可变的字符串类,内容可以改变

  • StringBuilder又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

  • 原来StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。

  • 它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容。原理如下图所示:(默认16字符空间,超过自动扩充)

2.1 StringBuilder构造方法

在这里插入图片描述

  • 范例
public class Demo {
    public static void main(String[] args) {
        //创建空白可改变字符串对象
        StringBuilder sb = new StringBuilder();
        System.out.println("sb:"+sb); //sb:
        System.out.println("sb.length():"+sb.length()); //sb.length():0

        //根据字符串内容创建对象
        StringBuilder sb2 = new StringBuilder("hello");
        System.out.println("sb2:"+sb2); //sb2:hello
        System.out.println("sb2.length():"+sb2.length()); //5
    }
}

2.2 StringBuilder常用方法

方法名说明
public StringBuilder append(任意类型)添加数据,并返回对象本身
public StringBuilder reverse()返回相反的字符序列
public int length()返回长度(字符出现的个数)

2.3 StringBuilder 和 String 相互转换

  • 1.StringBuilder 转换为 String
public String toString()通过toString()可以把StringBuilder 转换为 String
  • 2.String 转换为 StringBuilder
public StringBuilder(String s)通过构造方法就可以把String 转换为 StringBuilder