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

Java で文字列を作成する際に「new」の使用を避けるべきなのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-19 09:24:03739ブラウズ

Why Should We Avoid Using `new` to Create Strings in Java?

Java で文字列を作成するのに new を使用しないのはなぜですか?

文字列は確かに Java のオブジェクトですが、Java とは異なる方法で作成されます。 文字列インターニング.

Java では、文字列リテラル (二重引用符で囲まれた) は自動的にインターンされます。これは、同じ文字列リテラルへの複数の参照がメモリ内の同じ String オブジェクトを指すことを意味します。したがって、new を使用して String オブジェクトを作成するのは冗長であり、不必要です。

例:

String str1 = "Hello World";
String str2 = "Hello World";

ここで、str1 と str2 は、一見同じように見えますが、同じ String オブジェクトを参照しています。別途作成。これは、JVM が文字列リテラル「Hello World」を認識し、インターンされた String オブジェクトを取得するためです。

次に、文字列の作成に new を使用することが推奨されない理由を理解しましょう。

  • 効率: 文字列リテラルをインターニングすると、メモリ消費量とパフォーマンスが向上します。 new を使用すると、毎回新しい String オブジェクトが作成されるため、不必要なオブジェクトの作成とオーバーヘッドが発生します。
  • Singletons: インタニングにより、特定の値を持つ String オブジェクトのインスタンスが 1 つだけ存在することが保証されます。 、事実上シングルトンになります。これにより、一貫した動作が実現され、予期しないオブジェクトの重複が防止されます。
  • オブジェクトの等価性: インタニングにより、同じ値を持つ文字列リテラルが常に互いに等しいことが保証されます。これは、Java の文字列等価性のセマンティクスと一致します。

要約すると、Java での文字列インターンにより、文字列を作成するために new を使用する必要がなくなり、効率が向上し、文字列リテラルを操作する際の一貫した動作が保証されます。 .

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。