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

王林
リリース: 2019-11-25 17:13:34
転載
2296 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート