1. 程式人生 > 實用技巧 >String、StringBuilder的使用

String、StringBuilder的使用

1. String類概述

String 類代表字串,Java 程式中的所有字串文字(例如“abc”)都被實現為此類的例項。也就是說,Java 程式中所有的雙引號字串,都是 String 類的物件。String 類在 java.lang 包下,所以使用的時候不需要導包!

2. String類的特點

  • 字串不可變,它們的值在建立後不能被更改

  • 雖然 String 的值是不可變的,但是它們可以被共享

  • 字串效果上相當於字元陣列( char[] ),但是底層原理是位元組陣列( byte[] )

3. String類的構造方法

  • 常用的構造方法

    方法名說明
    public String()
    建立一個空白字串物件,不含有任何內容
    public String(char[] chs) 根據字元陣列的內容,來建立字串物件
    public String(byte[] bys) 根據位元組陣列的內容,來建立字串物件
    String s = “abc”; 直接賦值的方式建立字串物件,內容就是abc
  • 示例程式碼

    public class StringDemo01 {
    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'};
    String s2 = new String(chs);
    System.out.println("s2:" + s2);

    //public String(byte[] bys):根據位元組陣列的內容,來建立字串物件
    byte[] bys = {97, 98, 99};
    String s3 = new String(bys);
    System.out.println("s3:" + s3);

    //String s = “abc”; 直接賦值的方式建立字串物件,內容就是abc
    String s4 = "abc";
    System.out.println("s4:" + s4);
    }
    }

4. 建立字串物件兩種方式的區別

  • 通過構造方法建立

    通過 new 建立的字串物件,每一次 new 都會申請一個記憶體空間,雖然內容相同,但是地址值不同

  • 直接賦值方式建立

    以“”方式給出的字串,只要字元序列相同(順序和大小寫),無論在程式程式碼中出現幾次,JVM 都只會建立一個 String 物件,並在字串池中維護

5. 字串的比較

  ==號的作用

  • 比較基本資料型別:比較的是具體的值

  • 比較引用資料型別:比較的是物件地址值

  equals方法的作用

  • 方法介紹

    public boolean equals(String s)   比較兩個字串內容是否相同、區分大小寫
  • 示例程式碼

    public class StringDemo02 {
    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 == s2);
    System.out.println(s1 == s3);
    System.out.println(s3 == s4);
    System.out.println("--------");

    //比較字串內容是否相同
    System.out.println(s1.equals(s2));
    System.out.println(s1.equals(s3));
    System.out.println(s3.equals(s4));
    }
    }


6.
StringBuilder類概述

  StringBuilder 是一個可變的字串類,我們可以把它看成是一個容器,這裡的可變指的是 StringBuilder 物件中的內容是可變的

7. StringBuilder類和String類的區別

  • String類:內容是不可變的

  • StringBuilder類:內容是可變的

8. StringBuilder類的構造方法

  • 常用的構造方法

    方法名說明
    public StringBuilder() 建立一個空白可變字串物件,不含有任何內容
    public StringBuilder(String str) 根據字串的內容,來建立可變字串物件
  • 示例程式碼

public class StringBuilderDemo01 {
public static void main(String[] args) {
//public StringBuilder():建立一個空白可變字串物件,不含有任何內容
StringBuilder sb = new StringBuilder();
System.out.println("sb:" + sb);
System.out.println("sb.length():" + sb.length());

//public StringBuilder(String str):根據字串的內容,來建立可變字串物件
StringBuilder sb2 = new StringBuilder("hello");
System.out.println("sb2:" + sb2);
System.out.println("sb2.length():" + sb2.length());
}
}

9. StringBuilder類新增和反轉方法

  • 新增和反轉方法

    方法名說明
    public StringBuilder append(任意型別) 新增資料,並返回物件本身
    public StringBuilder reverse() 返回相反的字元序列
  • 示例程式碼

public class StringBuilderDemo01 {
public static void main(String[] args) {
//建立物件
StringBuilder sb = new StringBuilder();

//public StringBuilder append(任意型別):新增資料,並返回物件本身
// StringBuilder sb2 = sb.append("hello");
//
// System.out.println("sb:" + sb);
// System.out.println("sb2:" + sb2);
// System.out.println(sb == sb2);

// sb.append("hello");
// sb.append("world");
// sb.append("java");
// sb.append(100);

//鏈式程式設計
sb.append("hello").append("world").append("java").append(100);

System.out.println("sb:" + sb);

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

10. StringBuilder和String相互轉換

  • StringBuilder轉換為String

    public String toString():通過 toString() 就可以實現把 StringBuilder 轉換為 String

  • String轉換為StringBuilder

    public StringBuilder(String s):通過構造方法就可以實現把 String 轉換為 StringBuilder

  • 示例程式碼

public class StringBuilderDemo02 {
public static void main(String[] args) {
/*
//StringBuilder 轉換為 String
StringBuilder sb = new StringBuilder();
sb.append("hello");

//String s = sb; //這個是錯誤的做法

//public String toString():通過 toString() 就可以實現把 StringBuilder 轉換為 String
String s = sb.toString();
System.out.println(s);
*/

//String 轉換為 StringBuilder
String s = "hello";

//StringBuilder sb = s; //這個是錯誤的做法

//public StringBuilder(String s):通過構造方法就可以實現把 String 轉換為 StringBuilder
StringBuilder sb = new StringBuilder(s);

System.out.println(sb);
}
}

11. 幫助文件檢視StringBuilder常用方法

方法名說明
public StringBuilder append (任意型別) 新增資料,並返回物件本身
public StringBuilder reverse() 返回相反的字元序列
public int length() 返回長度,實際儲存值
public String toString() 通過toString()就可以實現把StringBuilder轉換為String