ホームページ  >  記事  >  Java  >  Java の String クラスにおける 2 種類のオブジェクトのインスタンス化の違い

Java の String クラスにおける 2 種類のオブジェクトのインスタンス化の違い

王林
王林転載
2019-11-25 17:13:342277ブラウズ

Java の String クラスにおける 2 種類のオブジェクトのインスタンス化の違い

違い:

直接割り当て: ヒープ メモリ領域のみが開かれ、文字列オブジェクトはオブジェクト プールに自動的に保存されます。 . 次回の利用のために。

構築方法: ヒープメモリ空間を 2 つオープンしますが、そのうちの 1 つはゴミスペースとなり、オブジェクトプールには自動保存されません。intern() メソッドを使用して手動でプールに入ることができます。

推奨される Java 関連ビデオ チュートリアル: Java ビデオ チュートリアル

直接割り当て:

Java の String クラスにおける 2 種類のオブジェクトのインスタンス化の違い

定数最適化メカニズム:

String クラスの設計では、共有設計パターンが使用されます。

JVM の下部では、オブジェクト プール (文字列オブジェクト プール) が実際に自動的に維持されます。直接割り当てモードを使用して String クラスのオブジェクトをインスタンス化する場合、インスタンス化されたオブジェクト (文字列content ) は、このオブジェクト プールに自動的に保存されます。

次回も引き続き直接代入モードを使用して String クラス オブジェクトを宣言する場合、オブジェクト プールに指定されたコンテンツがあればそれが直接参照されますが、そうでない場合は、新しい文字列が作成されます。オブジェクトは次に使用するためにオブジェクト プールに保存されます。いわゆるオブジェクト プールはオブジェクトの配列です (目的はオーバーヘッドを削減することです)

コンストラクター メソッドの割り当て:

クラス オブジェクトはコンストラクターを使用してインスタンス化されるのが標準的な方法です。

String str = new String("hello");

分析により、String 構築メソッドを使用すると、2 つのヒープ メモリ領域が開かれ、そのうちの 1 つのヒープ メモリがゴミ領域になることがわかります。この欠点に加えて、文字列の共有にも問題があります。

したがって、直接代入が一般的に採用されます。

おすすめの関連記事とチュートリアル:

Java の入門

以上がJava の String クラスにおける 2 種類のオブジェクトのインスタンス化の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。