ホームページ > Java > &#&チュートリアル > Java で「new」なしで文字列を作成できるのはなぜですか?

Java で「new」なしで文字列を作成できるのはなぜですか?

Patricia Arquette
リリース: 2024-11-18 06:32:02
オリジナル
241 人が閲覧しました

Why Can Strings be Created Without 'new' in Java?

Java での文字列作成: 'new' の不在を明らかにする

Java は通常、オブジェクトや文字列をインスタンス化するために 'new' キーワードを使用します。この標準からの奇妙な逸脱を示しています。他のオブジェクトとは異なり、文字列は「new」を呼び出さずに作成できます。これにより、なぜこの例外が存在するのかという疑問が生じます。文字列の作成で 'new' を利用することはまだ可能ですか?

インターン メカニズムを理解する

これまでの説明に加えて、使用されているインターニング メカニズムを認識することが重要です。文字列リテラル ("abcd" ですが、Java の new String("abcd") ではありません)。このメカニズムにより、「abcd」の各インスタンスが単一の String インスタンスを参照するようになり、参照が繰り返されても新しいインスタンスが作成されるのを防ぎます。結果:

String a = "abcd";
String b = "abcd";

a == b; //True
ログイン後にコピー

インターンされていない文字列との比較

対照的に、'new' を使用して文字列を作成すると、結果のオブジェクトは個別のインスタンスになります:

String a = new String("abcd");
String b = new String("abcd");

a == b; // False
ログイン後にコピー

パフォーマンスに関する考慮事項

文字列リテラルのインターニングは、パフォーマンスに重大な影響を与えます。文字列はコード内で複数回出現することがよくありますが、インターンにより文字列を繰り返しインスタンス化する必要がなくなります。この最適化は、次のようなシナリオで特に有益になります。

for (int i = 0; i < 10; i++) {
  System.out.println("Next iteration");
}
ログイン後にコピー

インターンを使用しない場合、文字列「次の反復」は 10 回のインスタンス化を必要としますが、インターンでは 1 回のインスタンス化が保証されます。

以上がJava で「new」なしで文字列を作成できるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート