以前、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コピーの代替手法
文字列をコピーするために使用できるいくつかの関数もありますが、安全に文字列をコピーする場合は代入演算子を使用することが実用的ではありません。
-
String.valueOf()
メソッドを使用するString strCopy = String.valueOf(str); String strCopy1 = String.valueOf(str.toCharArray(), 0, str.length()); //overkill*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