ホームページ >Java >&#&チュートリアル >「CaseInsensitiveString cis = new CaseInsensitiveString('Polish')」は受け入れられるのに、「String s = new String('silly')」はメモリ最適化のために推奨されないのはなぜですか
Java 文字列メモリの最適化: "String s = new String("silly")" について
次の推奨事項に関して懸念が提起されました。 「String s = new String("silly")」のような Java コードの記述は避けてください。このアドバイスは String オブジェクトの場合のメモリ使用量の最適化には有効ですが、他のクラスには適用できない可能性があります。
「CaseInsensitiveString cis = new CaseInsensitiveString("Polish")」が受け入れられるのはなぜですか?
オブジェクト「cis」は CaseInsensitiveString クラスのインスタンスです。 String とは異なり、CaseInsensitiveString はオブジェクトを作成するためにコンストラクターを必要とするユーザー定義クラスです。したがって、指定した文字列値でオブジェクトを初期化するには、構文 "CaseInsensitiveString cis = new CaseInsensitiveString("Polish")" が必要です。
CaseInsensitiveString をリテラル初期化の String のように動作させるにはどうすればよいですか?
String の場合と同様に CaseInsensitiveString のリテラル初期化を有効にするには、以下を実装できます:
リテラルを String に直接渡しても問題ないのはなぜですか?
String Javaの特別なクラスです。これには、インターンされた文字列の事前定義されたプールがあり、重複する文字列リテラルが同じオブジェクトへの参照として保存されます。これにより、同じ文字列値に対して複数の String オブジェクトを使用する必要がなくなり、メモリ消費が削減されます。
以上が「CaseInsensitiveString cis = new CaseInsensitiveString('Polish')」は受け入れられるのに、「String s = new String('silly')」はメモリ最適化のために推奨されないのはなぜですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。