目录

1、String

1.1、String的特点:

1.2、String的构造方法

1.3、String对象的特点

1.4、String的比较

2、StringBuilder

2.1、StringBuilder的构造方法

2.2、StringBuilder的添加和反转方法

2.3、StringBuilder 和 String 的相互转换


API(Application Programming Interface):应用程序编辑接口。

Java API:就是JDK中提供的各种功能的Java类。

1、String

String类在java.lang包下,java.lang包是提供利用java编程语言进行程序设计的基础类,使用的时候不需要导包。

String类代表字符串,Java程序中所有的字符串文字都被实现为此类的实例。也就是说,Java程序中所有的双引号字符串,都是String类的对象。

1.1、String的特点:

  • 字符串不可变,它们的值在创建后不能被更改;
  • 虽然String的值是不可变的,但是它们可以被共享;
  • 字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])。

1.2、String的构造方法

方法名

说明

public String()

创建一个空白字符串对象,不含有任何内容

public String(char[] chs)

根据字符数组的内容,来创建字符串对象

public String(byte[] bys)

根据字节数组的内容,来创建字符串对象

String str = "abcd";

直接赋值的方式创建字符串对象,内容就是abcd

推荐使用直接赋值方式创建字符串对象。

代码演示:

package myPacket;

public class testString {
    public static void main(String[] args) {
        //public String():创建一个空白字符串,不含有任何内容
        String s1 = new String();
        System.out.println("s1="+s1);

        //public String(char[] chs):根据字符数组的内容,来创建字符串对象
        char[] chs = {'a','b','c','d'};
        String s2 = new String(chs);
        System.out.println("s2="+s2);
        //public String(byte[] bys):根据字节数组的内容,来创建字符串对象
        byte[] bys = {65,66,67,68};
        String s3 = new String(bys);
        System.out.println("s3="+s3);

        //String str = "abcd";:直接赋值的方式创建字符串对象,内容就是abcd
        String s4 = "abcd";
        System.out.println("s4="+s4);
    }
}

结果:

s1=
s2=abcd
s3=ABCD
s4=abcd

1.3、String对象的特点

  • 通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容可能相同,但是地址值一定不同;
  • 以 “” 方式给出的字符串,只要字符序列相同(区分顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护。

1.4、String的比较

字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫:equals() 。

public boolean equals(Object anObject); //将此字符串与指定对象进行比较。由于比较的是字符串对象,所以参数直接传递一个字符串。

package myPackage;

public class testString_1 {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "def";
        System.out.println(s1.equals(s2)); //比较s1是否与s2相同,输出结果为false
    }
}

2、StringBuilder

如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费内存空间,而这种操作还不可避免,因此我们可以通过Java提供的StringBuilder类来解决这个问题。

StringBuilder类也在java.lang包下,因此在使用的时候也不需要导包。

StringBuilder是一个可变的字符串类(可变指StringBuilder对象中的内容是可变的),我们可以把它看成是一个容器。

2.1、StringBuilder的构造方法

方法名

说明

public StringBuilder()

创建一个空白可变字符串对象,不含有任何内容

public StringBuilder(String str)

根据字符串的内容,来创建可变字符串对象

2.2、StringBuilder的添加和反转方法

方法名

说明

public StringBuilder append(任意类型)

添加数据,并返回对象本身

public StringBuilder reverse()

返回相反的字符序列

代码演示:

package myPackage;

public class TestStringBuilder {
    public static void main(String[] args) {
        //创建对象
        StringBuilder sb1 = new StringBuilder();

        //添加数据。public StringBuilder append(任意类型):添加数据,并返回对象本身(可以实现链式编程)
        StringBuilder sb2 = sb1.append("Hello").append("World!"); //链式编程
        System.out.println("sb1:" + sb1);
        System.out.println("sb2:" + sb2);
        System.out.println(sb1 == sb2);

        //public StringBuilder reverse():返回相反的字符序列
        sb1.reverse();
        System.out.println("sb1:"+sb1);
        System.out.println("sb2:"+sb2);
    }
}

结果为:
sb1:HelloWorld!
sb2:HelloWorld!
true
sb1:!dlroWolleH
sb2:!dlroWolleH

2.3、StringBuilder 和 String 的相互转换

  • StringBuilder转换为String:
//通过toString()就可以实现把StringBuilder转换为String
public String toString();

范例:String s = sb.toString();
  • String转换为StringBuilder:
//通过构造方法就可以实现把String转换为StringBuilder
public StringBuilder(String s);

范例:StringBuilder sb = new StringBuilder(s);