HOWTO · Java
Java で文字列をコピーする
この記事では、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 行は、最初の参照を 2 番目のインスタンスに格納し、コピー値を別の行に出力します。その結果、second 変数には first 参照が含まれます。次に、first = "Updated string"は、最初の文字列の参照を既存の値からヒープメモリ内の別の文字列に変更します。
Java 文字列は本質的に不変です。これは、文字列が作成されると、ヒープメモリに存在することを意味します。また、最初の変数に別の値が割り当てられても、その値は上書きされません。代わりに、変数はヒープメモリから別の文字列を参照するようになりました。ガベージコレクタが動作しない限り、ヒープメモリ内の参照はヒープに格納されます。この関数は、変数によって参照されていない場合、定数メモリプールから変数をフラッシュします。
文字列をコピーする別の方法は、copyValueOf メソッドを使用します。これは、文字配列を入力として受け取る静的ファクトリメソッドです。インスタンスは、最初に toCharArray 関数を使用して文字配列に変換されます。最終的な文字列インスタンスは、newCopy 変数によって参照され、別の行に出力されます。
文字列をコピーする 3 番目の方法は、new キーワードを使用することです。このメソッドは、メモリ内に 2つのインスタンスを作成します。最初のインスタンスは値を保持し、もう 1つの 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