使用すると新しい文字列オブジェクトnew
が取得されますが、文字列リテラルを使用する場合はここを参照してください:
コンピュータサイエンスでは、文字列のインターンは、不変でなければならない個別の文字列値のコピーを1つだけ保存する方法です。文字列をインターンすると、一部の文字列処理タスクの時間効率またはスペース効率が向上しますが、文字列の作成またはインターン処理により多くの時間が必要になります。個別の値は文字列インターンプールに格納されます。各文字列の単一のコピーは「intern」と呼ばれ、通常、JavaのString.intern()などの文字列クラスのメソッドによって検索されます。Javaのすべてのコンパイル時定数文字列は、このメソッドを使用して自動的にインターンされます。
もし、するなら:
String a = "foo";
String b = "foo";
それなら本当a==b
です!
文字列は、インターンされていない場合にのみ作成されます。オブジェクトは最初に作成され、文字列定数プールと呼ばれる場所に格納されます。
ただし、new
これを使用すると、文字列ごとに異なるオブジェクトが作成され、falseが出力されます。
String a = new String("foo");
String b = new String("foo");
今a==b
は偽です。
したがって、リテラルを使用すると、読みやすくなり、コンパイラーが最適化を行うのも簡単になります。だから..あなたができるときにそれを使用してください。