在 Java 中复制字符串

Rashmi Patidar 2023年10月12日
在 Java 中复制字符串

在 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
作者: Rashmi Patidar
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

相关文章 - Java String