JavaのStringのコピー
前に、JavaでStringをコピーする方法について聞かれました。Stringは不変(イミュータブル)なオブジェクトであるため、単に別のStringに代入するだけでコピーすることができます。元のStringの値が変わっても、イミュータビリティのため新しいStringの値は変わりません。
JavaのStringのコピー
以下は、この動作を示すための短いJavaの文字列コピープログラムです。
package com.scdev.string;
public class JavaStringCopy {
public static void main(String args[]) {
String str = "abc";
String strCopy = str;
str = "def";
System.out.println(strCopy); // prints "abc"
}
}
任意の不変オブジェクトに対して、1つの変数を別の変数に直接割り当てることができることに注意してください。これは文字列オブジェクトに限定されません。ただし、可変オブジェクトを別の変数にコピーする場合は、ディープコピーを行う必要があります。
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メソッドが役立ちます。