Java String類

2022-07-02 12:00:30

概述

 字串廣泛應用 在 Java 程式設計中,在 Java 中字串屬於物件,Java 提供了 String 類來建立和操作字串。
jdk中提供非常多的字元和字串操作方法及構造方法,這裡只介紹一些常用的方法和構造方法。完整的String類下的方法可以參考官方的API檔案。
本地API檔案下載: https://kohler.lanzouv.com/ikIfV078pbhe
線上API檔案:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html

API檔案截圖:

物件建立

直接使用字面值

可以直接定義String型別的變數直接給其賦值一個字串字面值
例:

String name = "愷龍";

使用構造方法

可以使用String中定義的構造方法來建立物件。String類下有非常多的構造方法,這裡只介紹幾個常用的。

String()

public String();
初始化新建立的字串物件,使其表示空字元序列。

範例程式碼:

 public static void main(String[] args) {
		//使用無參構造建立。字串的內容為空 相當於 ""
        String s1 = new String();
    }

String(byte[] bytes)

String(byte[] bytes);
將陣列轉換為字串。
範例程式碼:

 public static void main(String[] args) {
		
        byte[] bytes = {68,74,84,85};
        String s = new String(bytes);
        System.out.println(s);//輸出結果為DJTU,這裡是將數位通過ASC碼錶轉換為了字母
    }

結果:

String(byte[] bytes, int offset, int length)

通過使用平臺的預設字元集解碼指定的 byte 子陣列,構造一個新的 String。
引數:
bytes:要解碼為字元的 byte
offset: 要解碼的第一個 byte 的索引
length: 要解碼的 byte 數 的長度

範例程式碼:

 public static void main(String[] args) {
        byte[] bytes = {68,74,84,85};
        String s = new String(bytes,0,2);
        System.out.println(s);//輸出結果為DJ,從第0個開始長度為2個
        String s2 = new String(bytes,0,1);
        System.out.println(s2);//輸出結果為D,從第0個開始長度為1個
    }

結果:
String(char[] value)

轉換字元陣列為字串類
範例程式碼:

 public static void main(String[] args) {
        char[] chars = {'D','J','T','U'};
        String s = new String(chars);
        System.out.println(s);//輸出結果為DJTU
    }

結果:
String(char[] value, int offset, int count)

引數:
value - 作為字元源的陣列。
offset - 初始偏移量。
count - 長度。
就是在陣列value上選取一部分成為String物件。
範例程式碼:

 public static void main(String[] args) {
        char[] chars = {'D','J','T','U'};
        String s = new String(chars,0,1);
        System.out.println(s);//輸出結果為D
        String ss = new String(chars,0,2);
        System.out.println(s2);//輸出結果為DJ
    }

結果:

常用方法

方法 解釋
String[] split(String regex) 把一個字串按照指定的分隔符切割成多個字串,把多個字串放在一個字串陣列中返回
char[] toCharArray(); 把一個字串的內容轉換成一個字元陣列
byte[] getBytes(); 把一個字串的內容轉換成一個byte陣列
String substring(int index); 把某個字串從index索引開始擷取到最後
String substring(int begin,int end) 把某個字串索引begin到索引end擷取出來
boolean equals(Object anObject) 判斷兩個字串的內容是否相同

split方法演示

    public static void main(String[] args) {
        String s = "DJTU,China,LiaoNing,DaLian";
        String[] strs = s.split(",");//以,分割
        for (int i = 0; i < strs.length; i++) {
            System.out.println(strs[i]);
        }
    }

結果:

toCharArray方法演示

 public static void main(String[] args) {
        String s = "DJTU";
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }
    }

結果:

getBytes方法演示

    public static void main(String[] args) {
        String s = "DJTU";
        byte[] bytes = s.getBytes();//按照ASC碼錶轉換為數位
        for (int i = 0; i < bytes.length; i++) {
            System.out.println(bytes[i]);
        }
    }

結果:

substring方法演示

    public static void main(String[] args) {
        String s = "DJTU";
        String substring = s.substring(1);//從第[1]個開始擷取
        System.out.println(substring);
    }

結果:

    public static void main(String[] args) {
        String s = "DJTU";
        String substring = s.substring(1,2);//從第[1]個開始到第[2]個結束(不包含第[2]個)
        System.out.println(substring);
    }

equals方法演示

    public static void main(String[] args) {
        String s = "DJTU";
        String s2 = "DJTU";
        String s3 = "DJTUD";
        boolean flag = s.equals(s2);
        boolean flag1 = s.equals(s3);
        System.out.println(flag);//輸出true
        System.out.println(flag1);//輸出false
    }

結果:

特點

  1. 一個字串一旦建立其內容是永遠不會變的
  2. 字串效果上相當於是char[]字元陣列,但是底層其實是byte[]位元組陣列

如圖片失效等問題請參閱公眾號文章:https://mp.weixin.qq.com/s/_vctLlUqXqy7_vWBwYaFgg

歡迎關注我的公眾號:"愚生淺末",一起交流學習。