Javaの文字列コピー

以前、JavaでStringをコピーする方法について聞かれました。Stringは不変オブジェクトであるため、単純に別のStringに代入するだけでコピーすることができます。元の文字列の値が変更されても、不変性のため新しいStringの値は変わりません。

JavaのStringコピー

以下は、この振る舞いを示す短いJavaのStringコピーのプログラムです。

package com.journaldev.string;

public class JavaStringCopy {

	public static void main(String args[]) {
		String str = "abc";

		String strCopy = str;

		str = "def";
		System.out.println(strCopy); // prints "abc"

	}
}

なお、不変オブジェクトに対しては、任意の変数に直接代入することができます。これはStringオブジェクトに限られません。ただし、可変オブジェクトを別の変数にコピーする場合は、ディープコピーを行う必要があります。

JavaのStringコピーの代替手法

文字列をコピーするために使用できるいくつかの関数もありますが、安全に文字列をコピーする場合は代入演算子を使用することが実用的ではありません。

  1. String.valueOf()メソッドを使用する

    String strCopy = String.valueOf(str);
    
    String strCopy1 = String.valueOf(str.toCharArray(), 0, str.length()); //overkill*2
    
  2. String.copyValueOf()メソッドを使用する、完全に過剰だが可能です。

    String strCopy = String.copyValueOf(str.toCharArray());
    
    String strCopy1 = String.copyValueOf(str.toCharArray(), 0, str.length()); //overkill*2
    

もし文字列の一部を別の文字列にコピーしたい場合は、valueOfメソッドとcopyValueOfメソッドが便利です。

Source:
https://www.digitalocean.com/community/tutorials/java-string-copy