HOWTO · Java

在 Java 中複製字串

這篇文章介紹了一種如何在 Java 中複製一個 String 的方法。

本頁內容

在 Java 語言中,字串是一種儲存字元序列的資料型別。字串是一個包裝類,它提供了諸如 compare()、replace() 和 substring() 之類的方法。每當物件被例項化時,物件就會儲存在堆記憶體中。

在 Java 中複製字串

下面是向你展示如何在 Java 中複製字串的程式碼塊。

public class StringCopy {
  public static void main(String[] args) {
    String first = "First String";
    System.out.println("First initially = " + first);
    String second = first;
    System.out.println("String copy in second = " + second);
    first = "Updated string";
    System.out.println("First after update = " + first);

    String newCopy = String.copyValueOf(first.toCharArray());
    System.out.println("Copy using copyValueOf() = " + newCopy);

    String copyString = new String(first);
    System.out.println("Copy using new = " + copyString);
  }
}

在上面的程式中,在操作的第一部分初始化了一個字串。表示 String first = "First String" 在記憶體中建立了 First String 的例項;此外,這個新的字串地址首先被分配給變數。該值使用 println() 方法列印。

現在,String second = first 行將第一個引用儲存在第二個例項中,並在另一行中列印副本值。因此,second 變數包含 first 引用。然後,first = "Updated string" 會將第一個的引用從現有值更改為堆記憶體中的另一個字串。

Java 字串本質上是不可變的。這意味著當一個字串被建立時,它就在堆記憶體中。當另一個值被分配給第一個變數時,它不會被覆蓋。相反,該變數現在引用了堆記憶體中的另一個字串。除非垃圾收集器開始工作,否則堆記憶體中的引用會儲存到堆中。當沒有被任何變數引用時,該函式會從常量記憶體池中清除變數。

另一種複製字串的方法是使用 copyValueOf 方法。它是一個以字元陣列作為輸入的靜態工廠方法。該例項首先使用 toCharArray 函式轉換為字元陣列。最後的字串例項被 newCopy 變數引用並列印在另一行中。

複製字串的第三種方法是使用 new 關鍵字。該方法在記憶體中建立兩個例項:第一個儲存值,另一個 copyString 變數儲存 first 變數的引用。

下面是從上面的程式產生的程式碼塊。

輸出:

First initially = First String
String copy in second = First String
First after update = Updated string
Copy using copyValueOf() = Updated string
Copy using new = Updated string