1

この方法を持っている

void doSomething(String input)
{
   //trick for create new object instead of reference assignment
   String workStr= "" + input; 

   //work with workStr
}

それを行うためのJavaの方法はどれですか?

編集

  • input変数をinput=somethingとして使用すると、Netbeansはメソッドパラメータに値を割り当てることについて警告します
  • new String(input)で作成すると、Stringコンストラクターの使用について警告されます

おそらく解決策は、入力に何も割り当てないか、警告を無視することです。

4

2 に答える 2

5
String copy = new String(original);

新しく作成された String オブジェクトを初期化して、引数と同じ文字シーケンスを表すようにします。つまり、新しく作成された文字列は引数文字列のコピーです。オリジナルの明示的なコピーが必要でない限り、文字列は不変であるため、このコンストラクターを使用する必要はありません。

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#String(java.lang.String )

于 2012-05-10T15:33:30.673 に答える
4

Stringつまり、オブジェクト自体を変更することはできません (文字列 (部分文字列など) を返す操作は、新しいものを返します)。

Stringこれは、元のオブジェクトを変更する方法がないため、 の新しいオブジェクトを作成する必要がないことを意味します。そうしようとすると、メモリが浪費されるだけです。

参照の割り当てが問題になるのは、問題のオブジェクトが変更可能な場合のみです。これは、1 つのオブジェクトの変更が同じ参照の他のすべてのコピーに反映されるためです。

于 2012-05-10T15:36:17.570 に答える