1. 程式人生 > 其它 >20.Java String 類詳解 / String類的常量池(瞭解)/ String 類常用方法(掌握)

20.Java String 類詳解 / String類的常量池(瞭解)/ String 類常用方法(掌握)

Java String 類詳解、String類的常量池(瞭解)、String 類常用方法(掌握)

String 類詳解

重點是練方法的使用,不用去深究方法的實現。

簡述

String 類又稱作不可變字元序列。
String 位於 java.lang 包中,Java 程式預設匯入 java.lang 包下的所有類。
Java 字串是 Unicode 字元序列,例如:"Java" 即是 4 個 Unicode 字元 ‘J’、‘a’、‘v’、‘a’ 組成的。
Java 沒有內建的字串型別,而是在標準 Java 類庫中提供了一個預定義的類 String,每個用雙引號括起來的字串都是 String 類的一個例項。

程式碼示例

(1)String 類的簡單使用

String e = "";//空字串
String greeting = "helloworld!"; 

(2)字串連線

String s1 = "Hello!";
String s2 = "World!";
String s = s1 + "," + s2;  

注意點

Java 允許使用符號 "+",把兩個字串連線起來。
在 "+" 運算子兩側的運算元中,只要有一個是字串(String)型別,系統會自動將另一個運算元轉換為字串,然後再進行連線。

字串相等判斷

用雙引號包裹起來的字串, 比如 "abcdefg",都是在方法區的常量值位置存放。
符號 “==” :用於比較是否是同一個物件,如果不是,則值為 false
equals() 方法:比較兩個字串物件包含的字元是否一樣,用 equals() 方法

程式碼示例:測試字串相等判斷

package cn.jungle.test.String;

// 測試字串相等判斷
public class Test01 {
    public static void main(String[] args) {
        String str1 = new String("abcdefg");
        String str2 = "abcdefg";
        // == 符號用於比較兩個物件是否相等,下方的 str1 和 str2 記憶體地址不相等,所以 false
        System.out.println(str1 == str2);       // false
        System.out.println(str1);               // abcdefg
        System.out.println(str2);               // abcdefg
        // 涉及字串比較的時候,都用 equals 方法:比較兩個字串物件包含的字元是否一樣
        System.out.println(str1.equals(str2));  // true
    }
}

String類的常量池(瞭解)

  1. 全域性字串常量池(String Pool)

全域性字串常量池中存放的內容是在類載入完成後存到 String Pool 中的,在每個 VM 中只有一份,存放的是字串常量的引用值(在堆中生成字串物件例項)。

  1. class 檔案常量池(Class Constant Pool)

class 常量池在編譯時每個 class 都會有,在編譯階段,存放的是常量(文字字串、final 常量等)和符號引用。

  1. 執行時常量池(Runtime Constant Pool)

執行時常量池是在類載入完成之後,將每個 class 常量池中的符號引用值轉存到執行時常量池中,也就是說,每個 class 都有一個執行時常量池,類在解析之後,將符號引用替換成直接引用,與全域性常量池中的引用值保持一致。

String 類常用方法(掌握)

charAt(int index)

返回值型別為 char
返回字串中第 index 個字元 。

length()

返回型別為 int
返回字串的長度。

equals(String other)

返回值型別為 boolean
如果字串與 other 相等,則返回 true,否則返回 false。

equalsIgnoreCase(String other)

返回值型別為 boolean
如果字串與 other 相等(忽略大小寫),則返回 true;否則返回 false。

indexOf(String str)

返回值型別為 int
返回從頭開始查詢第一個子字串 str 在字串中的索引位置。
如果未找到子字串 str,則返回 -1

lastIndexOf()

返回值型別為 int
返回從末尾開始查詢第一個子字串 str 在字串中的索引位置。
如果未找到子字串 str,則返回 -1

replace(char oldChar,char newChar)

返回一個新字串,它通過用 newChar 替換此字串中出現的所有 odlChar 而生成。
可以替換一個字元,也可以替換一堆字元。

startsWith(String prefix)

返回值型別為 boolean
如果字串以 prefix 開頭,則返回 true。

endsWith(String prefix)

返回值型別為 boolean
如果字串以 prefix 結尾,則返回 true。

substring(int beginIndex)

返回值型別為 String
返回一個新字串,該串包含從原始字串 beginIndex 索引位置到串尾。

substring(int beginIndex,int endIndex)

返回值型別為 String
返回一個新字串,該串包含從原始字串 beginIndex 索引位置到串尾或者到 endIndex-1 索引位置的所有字串。

toLowerCase()

返回值型別為 String
返回一個新字串,該串將原始字串中所有的大寫字母改為小寫字母。

toUpperCase()

返回值型別為 String
返回一個新字串,該串將原始字串中的所有小寫字母改成大寫字母。

trim()

返回值型別為 String
返回一個新字串,該串刪除了原始字串頭部和尾部的空格。

程式碼示例:String 類常用方法

package cn.jungle.test.String;

// 測試 String 類的常用方法
public class Test02 {
    public static void main(String[] args) {
        String str1 = "阿jun修煉手冊";
        String str2 = "阿jun";
        String str3 = "阿jUN";  // 用於與 str2 比較
        String str4 = "阿jun沒物件!";
        // charAt(int index) 方法:找到並輸出對應索引的字元,索引從 0 開始
        System.out.println(str1.charAt(0)); // 阿
        System.out.println(str1.charAt(6)); // 手
        // length() 方法:輸出字串的長度
        System.out.println(str1.length());  // 8
        // 取字串的最後一個字元
        System.out.println(str1.charAt(str1.length()-1)); // 冊
        // equals(String other) :比較兩個字串物件的字串內容是否相等
        System.out.println(str1.equals(str2));  // false
        // equalsgnoreCase(String other):比較兩個字串物件的字串是否相等,忽略大小寫
        System.out.println(str2.equalsIgnoreCase(str3));  // true
        // indexOf(String str):返回從頭開始查詢第一個子字串 str 在字串中的索引位置。如果未找到子字串 str,則返回 -1
        System.out.println(str1.indexOf("u"));    // 2
        System.out.println(str1.indexOf("UN"));   // -1
        System.out.println(str1.indexOf("jun"));  // 1
        // lastIndexOf():返回從末尾開始查詢第一個子字串 str 在字串中的索引位置。如果未找到子字串 str,則返回 -1
        System.out.println(str1.lastIndexOf("u"));     // 2
        System.out.println(str1.lastIndexOf("手"));    // 6
        System.out.println(str1.lastIndexOf("U"));    // -1
        // replace(char oldChar,char newChar):返回一個新字串,它通過用 newChar 替換此字串中出現的所有 odlChar 而生成。可以替換一個字元,也可以替換一堆字元。
        System.out.println(str4.replace("沒物件!","修煉手冊"));  // 阿jun修煉手冊 ,其中可以替換一個字元,也可以替換一堆字元。
        // 可以替換一個字元,也可以替換一堆字元。
        System.out.println(str4.replace("!",",他應該快有物件了吧!,現在是2021年11月24日22:21"));
        // startsWith(String prefix):如果字串以 prefix 開頭,則返回 true
        System.out.println(str1.startsWith("阿jun"));  // true
        System.out.println(str1.startsWith("jun"));   // false
        // endsWith(String prefix):如果字串以 prefix 結尾,則返回 true
        System.out.println(str1.endsWith("手冊"));     // true
        System.out.println(str1.endsWith("有手就行!")); // false
        System.out.println("有手就行!".endsWith("行不行")); // false ,也可以直接使用字串去呼叫 String 類方法
        // substring(int beginIndex):返回一個新字串,該串包含從原始字串 beginIndex 索引位置到串尾。
        System.out.println(str1.substring(4));  // 修煉手冊
        System.out.println(str1.substring(0));  // 阿jun修煉手冊
        // substring(int beginIndex,int endIndex):返回一個新字串,該串包含從原始字串 beginIndex 索引位置到串尾或者 endIndex-1 索引位置的所有字串。
        System.out.println(str1.substring(0,4));// 阿jun
        System.out.println(str1.substring(4,str1.length()));// 修煉手冊
        // toLowerCase():返回一個新字串,該串將原始字串中所有的大寫字母改為小寫字母。
        System.out.println("阿JUN".toLowerCase());  // 阿jun
        // toUpperCase():返回一個新字串,該串將原始字串中的所有小寫字母改成大寫字母。
        System.out.println("阿jun".toUpperCase());  // 阿JUN
        // trim():返回一個新字串,該串刪除了原始字串頭部和尾部的空格。
        String str5 = " 阿 jun 修煉手冊 ";
        System.out.println(str5.trim()); // 阿 jun 修煉手冊
        // 去除所有空格,trim() 方法和 replace() 方法搭配著來
        System.out.println(str5.trim().replace(" ","")); // 阿jun修煉手冊
    }
}

多敲多練

偷偷向銀河要了一把碎星✨只等你閉上眼睛撒入你的夢中。