CodeGym /Java Blog /Toto sisi /Java 字串
John Squirrels
等級 41
San Francisco

Java 字串

在 Toto sisi 群組發布

Java中的字串是什麼?

在程式設計中,字串是非常常用的。java中的字串是一個對象,表示由字元數組支援的字元序列。String類別在 Java 中是不可變的,並實作ComparableSerializingCharSequence介面。讓我們來看一個例子來理解。
String str = "string"
這裡str是6個字元的序列,分別是s、t、r、i、n和g。
字元數組索引 0 1 2 3 4 5
價值 s t r n G
記憶體位址 0x12824 0x12825 0x12826 0x12827 0x12828 0x12829
我們現在知道數組是不可變的,這意味著它在初始化後不能更改,因此字串也是不可變的。

字串初始化的方式

初始化字串有兩種方法。
  1. 字串文字
  2. 新幹員

字串字面量

上面的範例使用了宣告字串的最簡單、最直接的方法。每當編譯器解釋字串文字時,它總是會轉換為 String 物件。
String str = "string";

新幹員

我們也可以使用 new 運算子來初始化字串。
String strNew = new String("using new operator");

例子

import java.io.*;
import java.lang.*;

class StringInitializationExample {
    public static void main(String[] args)
    {
        //declare java string with a string literal
        String str = "a string literal";

        System.out.println("String str = " + str);

        //declare string using new operator
        String strNew = new String("using new operator");

        System.out.println("String strNew = " + strNew);
    }
}

輸出

String str = 字串文字 String strNew = 使用 new 運算符

String、StringBuilder、StringBuffer

我們已經討論了什麼是 String 類,因此我們將討論其他兩個類別及其用途,以及 Java 在已經為我們提供 String 類別的情況下引入這兩個類別的原因。您最好到頂部對 String 類別進行修訂,以便更好地理解它。

原因

我們知道 String 類別物件是不可變的,因此每當我們需要更改字串時,它都不會改變當前對象,但更改後的值始終儲存為新的 String 物件。因此,如果我們需要一次又一次地更改該值,記憶體也會被消耗。保持這一點Java為我們提供了StringBuilderStringBuffer類別。現在我們將看看它們在這種情況下有何用處。

字串緩衝區

String 是不可變字元序列的表示,而StringBuffer可變字元序列。它使用大多數String類別方法以及它自己的一些方法來更改字元的內容和序列。它是線程安全的,因為它的方法是同步的,供多個線程使用,從而保持串行順序。它實作SerializedAppendableCharSequence介面。

句法

StringBuffer str = new StringBuffer("Happy Java Programming");

字串產生器

StringBuilder 也表示可變的字元序列。它提供了一個API,該API與StringBuffer類別相容,但它不是線程安全的。因此,在不涉及多個執行緒的情況下,最好使用StringBuilder類,因為在許多情況下它比StringBuffer類別更快。這個類別的關鍵方法是insert和append。它還實作SerializedAppendableCharSequence介面。

句法

StringBuilder str = new StringBuilder("Happy Java Programming");

字串操作

在Java中,我們可以執行字串操作,例如連接比較拆分查找長度替換字串等。

字串方法

Java String 類別提供了各種用於操作字串或執行上述操作的方法。讓我們看看下表中的一些字串方法。
方法 描述
Char charAt(int 索引) 它傳回提供的索引處的 char 值。
字串連接(字串 str) 它透過將指定的字串組合到該字串的末尾來傳回一個字串。
布林值包含(CharSequence s) 如果字串包含指定的 char 值序列,則傳回 true。
布爾 contentEquals(CharSequence cs) 它將字串與提供的字元序列進行匹配。
布林 contentEquals(StringBuffer sb) 它將字串與提供的字串緩衝區進行匹配。
布林結束(字串後綴) 它將字串結尾與提供的後綴進行比較。
布爾等於(對象 anObject) 它將字串與提供的物件進行匹配。
布林值 equalsIgnoreCase(String anotherString) 此方法比較兩個字串而不考慮區分大小寫。
靜態字串格式(字串格式,物件...args) 它使用提供的格式和參數返回格式化的字串。
位元組 getBytes() 此方法使用平台的預設字元集將字串編碼為位元組序列,然後將其儲存到新的位元組數組中。
void getChars(int begin, int end, char[] dst, int dstBegin) 它將字串中的字元複製到目標字元陣列中。
int 哈希碼() 它傳回字串的哈希碼。
int indexOf(int ch) 它會傳回字串中首先出現的指定字元的索引。
int indexOf(int ch, int fromIndex) 它會傳回從該字串中提供的索引開始首先出現的指定字元的索引。
int indexOf(字串 str) 它在字串中搜尋提供的子字串並傳回第一次出現的索引。
int indexOf(字串 str, int fromIndex) 它開始從給定索引開始在字串中搜尋提供的子字串,並傳回第一次出現的索引。
字串實習生() 此方法傳回字串的規範表示形式。
int lastIndexOf(int ch) 此方法在字串中搜尋提供的字元並傳回最後一次出現的索引。
int lastIndexOf(int ch, int fromIndex) 此方法從給定索引向後搜尋字串中提供的字符,並傳回最後一次出現的索引。
int lastIndexOf(字串 str) 此方法在字串中搜尋提供的子字串並傳回最後一次出現的索引。
int lastIndexOf(字串 str, int fromIndex) 此方法從給定索引向後搜尋字串中提供的子字串,並傳回最後一次出現的索引。
整數長度() 該方法傳回字串的長度。
布林匹配(字串正規表示式) 它透過將字串與提供的正規表示式進行匹配來傳回 true 或 false。
字串替換(char oldValue,char newValue) 此方法在將字串中所有提供的 oldValue 替換為 newValue 後傳回字串。
字串[]分割(字串正規表示式) 此方法根據字串中提供的正規表示式來尋找所有符合項,並將其拆分為這些匹配項。
布林開始於(字串前綴) 它透過測試以提供的前綴開頭的字串來傳回 true 或 false。
字串子字串(int beginIndex) 此方法傳回一個字串,該字串是該字串的子字串。
字串 toLowerCase() 它使用預設區域設定的規則將字串的所有字元轉換為小寫。
字串修剪() 此方法從字串中刪除所有前導和尾隨空格並傳回它。
靜態字串 valueOf(char c) 它傳回 char 參數的字串表示形式。
現在藉助一些範例,我們將了解如何使用它們。

例子

import java.io.*;
import java.lang.*;

class JavaStringsExample {
  public static void main(String[] args) {

    //create a string
    String greeting = "Hello! World";
    System.out.println("String: " + greeting);

    //getting the length of greeting object
    int length = greeting.length();
    System.out.println("Length: " + length);

    //create first string
    String first = "Java ";
    System.out.println("First String: " + first);

    //create second string
    String second = "Programming";
    System.out.println("Second String: " + second);

    //joining two strings
    String joinedString = first.concat(second);
    System.out.println("Joined String: " + joinedString);

    String jpf = "Java programming";
    String jps = "Java programming";
    String jpt = "Python programming";

    //compare jpf and jps strings
    boolean result1 = jpf.equals(jps);
    System.out.println("Strings jpf and jps are equal: " + result1);

    //compare jpf and jpt strings
    boolean result2 = jpf.equals(jpt);
    System.out.println("Strings jpf and jpt are equal: " + result2);

    //converting jpf to uppercase
    System.out.println("Upper case jpf: " + jpf.toUpperCase());

    //replacing g character with v in jpf
    System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
  }
}

輸出

弦:您好!世界長度:12 第一個字串:Java 第二個字串:程式連接字串:Java 程式字串jpf 和jps 相等:true 字串jpf 和jpt 相等:false 大寫jpf:JAVA PROGRAMMING 在jpf 中用v替換g:java provramminv

結論

我們希望現在您了解什麼是 java 中的字串、它的類別以及如何實現它的不同方法。請隨意練習,並在需要更多幫助時返回。快樂學習!
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION