違い:
直接割り当て: ヒープ メモリ領域のみが開かれ、文字列オブジェクトはオブジェクト プールに自動的に保存されます。 . 次回の利用のために。
構築方法: ヒープメモリ空間を 2 つオープンしますが、そのうちの 1 つはゴミスペースとなり、オブジェクトプールには自動保存されません。intern() メソッドを使用して手動でプールに入ることができます。
推奨される Java 関連ビデオ チュートリアル: Java ビデオ チュートリアル
直接割り当て:
定数最適化メカニズム:
String クラスの設計では、共有設計パターンが使用されます。
JVM の下部では、オブジェクト プール (文字列オブジェクト プール) が実際に自動的に維持されます。直接割り当てモードを使用して String クラスのオブジェクトをインスタンス化する場合、インスタンス化されたオブジェクト (文字列content ) は、このオブジェクト プールに自動的に保存されます。
次回も引き続き直接代入モードを使用して String クラス オブジェクトを宣言する場合、オブジェクト プールに指定されたコンテンツがあればそれが直接参照されますが、そうでない場合は、新しい文字列が作成されます。オブジェクトは次に使用するためにオブジェクト プールに保存されます。いわゆるオブジェクト プールはオブジェクトの配列です (目的はオーバーヘッドを削減することです)
コンストラクター メソッドの割り当て:クラス オブジェクトはコンストラクターを使用してインスタンス化されるのが標準的な方法です。
String str = new String("hello");
分析により、String 構築メソッドを使用すると、2 つのヒープ メモリ領域が開かれ、そのうちの 1 つのヒープ メモリがゴミ領域になることがわかります。この欠点に加えて、文字列の共有にも問題があります。
したがって、直接代入が一般的に採用されます。
おすすめの関連記事とチュートリアル:
Java の入門以上がJava の String クラスにおける 2 種類のオブジェクトのインスタンス化の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。