Java では文字列はオブジェクトです: 作成に「new」がないのはなぜですか?
Java の文字列はオブジェクトですが、他のオブジェクトとは異なります。通常、「new」キーワードを使用せずに作成されます。この実践では、なぜ文字列の作成に 'new' が必要ないのかという疑問が生じます。
'new' を使用しない理由: 文字列インターニング
新しい文字列を作成するのではなくString オブジェクトの文字列リテラルが使用されるたびに、Java はインターニングと呼ばれるプロセスを実行します。インターンには、文字列プールと呼ばれる中央プールに文字列リテラルを保存することが含まれます。文字列リテラルが見つかると、文字列プールに対してチェックされます。同一の文字列リテラルがすでに存在する場合は、新しいオブジェクトを作成する代わりに、既存の文字列への参照が返されます。
例:
次のコードを考えてみましょう:
String str1 = "Hello"; String str2 = "Hello";
この例では、「str1」と「str2」の両方が文字列プール内の同じ String オブジェクトを参照しています。別途作成中です。結果として、「str1 == str2」は true と評価され、物理的に等しいことを示します。
インターニングの利点:
インターニングは、数値を減らすことでパフォーマンスを最適化します。作成された String オブジェクトの数 (特に頻繁に使用される文字列)。たとえば、文字列リテラルが複数回使用されるループでは、反復のたびに String オブジェクトを再作成するのではなく、String オブジェクトが 1 つだけ作成されるため、メモリが大幅に節約されます。
'new' を使用した文字列の作成
インターンが推奨されるアプローチですが、「new」を使用して文字列を作成することも可能です。ただし、これにより、同じ文字列値に対して複数の String オブジェクトが作成される可能性があり、メモリ使用量とパフォーマンスに影響を与える可能性があることに注意することが重要です。
結論:
Java での文字列作成に「new」が存在しないのは、文字列インターンの使用に起因します。インターンは、不必要なオブジェクトの作成を削減し、メモリ効率を促進することでパフォーマンスを向上させ、文字列を作成するための推奨される方法となっています。
以上がJava で文字列を作成するのに「new」を使用しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。