Java 字串

字串在字面意義上就是一系列字元。字串不是 Java 中的原始資料型別。是的,所以在技術方面,Java 字串基本上是一個字元陣列。

為什麼要使用字串?

現代電腦科學的主要功能之一是處理人類語言。與數字對數學的重要性類似,語言符號對於意義和決策也很重要。

作為 Java 程式設計師,你儲存和處理語言的主要工具之一將是 String 類。

String 語法示例

現在,讓我們來看一些字串語法。

String 是一個字元陣列,表示為:

//String is an array of characters
char[] arrSample = {'R', 'O', 'S', 'E'};
String strSample_1 = new String (arrSample);

在技​​術方面,字串在上面的例子中定義如下 -

= new (argument);

現在我們不能總是把我們的字串寫成陣列,因此我們可以在 Java 中定義 String,如下所示:

//Representation of String
String strSample_2 = "ROSE";

在技​​術方面,以上表示為:

= ;

Java 用 String Class 擴充套件了物件類。

字串連線

我們有兩個字串 str1 =Rock 和 str2 =Star,如果我們將這兩個字串相加,我們應該得到 str3 =RockStar 的結果。

看一下下面的程式碼片段,它解釋了執行字串連線的兩種方法。

首先使用 String 類的 concat 方法,然後使用算術 + 運算子。兩者都產生相同的輸出

public class Sample_String{
    public static void main(String[] args){
        //String Concatenation
        String str1 = "Rock";
        String str2 = "Star";
        //Method 1 : Using concat
        String str3 = str1.concat(str2);
        System.out.println(str3);
        //Method 2 : Using "+" operator
        String str4 = str1 + str2;
        System.out.println(str4);
    }
}

重要的 Java 字串方法:

字串 length 方法

你如何確定給定 String 的長度?Java 提供了一種稱為 length 的方法。將它用於你需要查詢長度的 String。

public class Sample_String{
    public static void main(String[] args){  
        //Our sample string for this tutorial
        String str_Sample = "RockStar";
        //Length of a String
        System.out.println("Length of String: " + str_Sample.length());
    }
}

輸出

Length of String: 8

字串 indexOf 方法

如果我知道長度,我怎麼能找到哪個字元在哪個位置?簡而言之,我如何找到字元的索引?

字串中有一個 indexOf 方法可以幫助你確定你指定的特定字元的位置。

public class Sample_String{
  public static void main(String[] args){
      //Character at position
      String str_Sample = "RockStar";
      System.out.println("Character at position 5: " + str_Sample.charAt(5));
      //Index of a given character
      System.out.println("Index of character 'S': " + str_Sample.indexOf('S'));
  }
}

輸出:

Character at position 5: t
Index of character 'S': 4

字串 charAt 方法

與上述問題類似,給定索引,我如何知道該位置的字元?

簡單,來使用 charAt 方法並提供你需要查詢其字元的索引。

public class Sample_String{
    public static void main(String[] args){
        //Character at position
        String str_Sample = "RockStar";
        System.out.println("Character at position 5: " + str_Sample.charAt(5));
    }
}

輸出:

Character at position 5: t

字串 CompareTo 方法

我想檢查由某種方法生成的字串是否等於我要驗證的字串?我如何比較兩個字串?

使用方法 compareTo 並指定要比較的字串。如果你不希望結果區分大小寫,請使用 compareToIgnoreCase

如果參考字串等於此字串,則結果為 0;如果此字串按字典順序小於參考字串,則小於 0,如果此字串按字典順序大於參考字串,則值大於 0

public class Sample_String{
    public static void main(String[] args){
        //Compare to a String
        String str_Sample = "RockStar";
        System.out.println("Compare To 'ROCKSTAR': " + str_Sample.compareTo("rockstar"));
        //Compare to - Ignore case
        System.out.println("Compare To 'ROCKSTAR' - Case Ignored: " + str_Sample.compareToIgnoreCase("ROCKSTAR"));
    }
}

輸出:

Compare To 'ROCKSTAR': -32
Compare To 'ROCKSTAR' - Case Ignored: 0

字串 contains 方法

我知道字串應該部分包含什麼,如何確認字串是否包含我指定的字元序列?

使用方法 contains 並指定你需要檢查的字元。當且僅當此字串包含指定的 char 值序列時,才返回 true

public class Sample_String{
    public static void main(String[] args){  
        //Check if String contains a sequence
        String str_Sample = "RockStar";
        System.out.println("Contains sequence 'tar': " + str_Sample.contains("tar"));
    }
}

輸出:

Contains sequence 'tar': true

字串 endsWith 方法

如何確認 String 是否以特定字尾結尾? 來使用 endsWith 方法並在引數中指定字尾。

如果參數列示的字元序列是此物件表示的字元序列的字尾,則返回 true

public class Sample_String{
    public static void main(String[] args){  
        //Check if ends with a particular sequence
        String str_Sample = "RockStar";
        System.out.println("EndsWith character 'r': " + str_Sample.endsWith("r"));
    }
}

輸出:

EndsWith character 'r': true

字串 replaceAllreplaceFirst 方法

我想在幾個地方修改我的 String 並在幾個地方替換 String,如何來做呢?

用 Java 字串替換的 replaceAllreplaceFirst 方法。你可以指定要替換的字串部分以及引數中的替換字串。

public class Sample_String{
    public static void main(String[] args){
        //Replace Rock with the word Duke
        String str_Sample = "RockStar";
        System.out.println("Replace 'Rock' with 'Duke': " + str_Sample.replace("Rock", "Duke"));
    }
}

輸出:

Replace 'Rock' with 'Duke': DukeStar

字串 tolowercasetouppercase 方法

我希望我的整個 String 以小寫或大寫顯示?

只需對需要轉換的字串使用 toLowercase()ToUpperCase() 方法。

public class Sample_String{
    public static void main(String[] args){      
        String str_Sample = "RockStar";
        //Convert to LowerCase
        System.out.println("Convert to LowerCase: " + str_Sample.toLowerCase());
        //Convert to UpperCase
        System.out.println("Convert to UpperCase: " + str_Sample.toUpperCase());
    }
}

輸出:

Convert to LowerCase: rockstar
Convert to UpperCase: ROCKSTAR

要點注意事項:

  • 字串是 final class,即一旦建立,其值就無法改變。因此,String 物件稱為不可變物件。

  • Java 虛擬機器(JVM)建立一個記憶體位置,特別是對於名為 String Constant Pool 的字串。這就是為什麼 String 可以在沒有 new 關鍵字的情況下初始化的原因。

  • String 類屬於 java.lang.String 層次結構。但是沒有必要匯入這個類。Java 平臺會自動提供它們。

  • 可以覆蓋字串引用,但不會刪除其內容,即

    String h1 = "hello";
    
    h1 = "hello"+"world";
    

    hello 字串不會被刪除,它只是失去了它的引用。

  • 多個引用可以用於相同的字串,但它將出現在同一個地方,即

    String h1 = "hello";
    String h2 = "hello";
    String h3 = "hello";
    

記憶體中,只建立了一個 hello 字串,它有三個參考, h1h2h3

  • 如果在 "" 中引用數字,那麼它將變為字串,而不再是數字。這意味著,

    String S1 ="The number is: "+ "123"+"456";
    
    System.out.println(S1);
    

那它就會列印

 ```java
 The number is: 123456
 ```

假如,

 ``` java
 String S1 = "The number is: "+(123+456);
 
 System.out.println(S1);
 ```

那它將列印

 ``` java
 The number is:579
 ```

 `579` 是字串型別,而不是整型了。