Java 文字列プールとは何ですか? また、"s" と new String("s") の違いは何ですか? [重複] 質問する

Java 文字列プールとは何ですか? また、

とはどういう意味ですかストリングプール? 次の宣言の違いは何でしょうか。

String s = "hello";
String s = new String("hello");

JVM によるこれら 2 つの文字列の保存に違いはありますか?

ベストアンサー1

文字列プールは、JVMのコンセプトの特別な実装です。文字列インターン:

コンピュータ サイエンスにおいて、文字列インターンは、不変でなければならない各個別の文字列値のコピーを 1 つだけ保存する方法です。文字列をインターンすると、文字列の作成またはインターンに要する時間は長くなりますが、一部の文字列処理タスクの時間効率やスペース効率が向上します。個別の値は、文字列インターン プールに保存されます。

基本的に、文字列インターン プールを使用すると、不変の文字列をプール内に保持することでランタイムがメモリを節約できるため、アプリケーションの領域では、共通文字列のインスタンスを複数作成するのではなく、そのインスタンスを再利用できます。

興味深い補足として、文字列インターンは、フライウェイトデザインパターン:

フライウェイトはソフトウェア設計パターンです。フライウェイトは、他の同様のオブジェクトと可能な限り多くのデータを共有することでメモリ使用量を最小限に抑えるオブジェクトです。これは、単純な繰り返し表現では許容できない量のメモリが使用される場合に、オブジェクトを大量に使用する方法です。

おすすめ記事