Java 文字列の文字列リテラルと新しいキーワード
Java では、String クラスは文字シーケンスを表すために使用される基本的なデータ型です。ただし、 new キーワードを使用して新しい String オブジェクトを作成することと、リテラル文字列を変数に直接割り当てることの間には、微妙な違いがあります。
新しいキーワードの使用
コードスニペット String s = new String("silly");リテラルの「silly」を引数として使用して、String クラスの新しいインスタンスを作成します。この操作は追加のメモリを割り当て、ヒープ上に新しいオブジェクトを作成します。
リテラルの直接割り当て
一方、代入 String s = "もう愚かなことはありません";これは、リテラル値「もう愚かではない」を変数 s に直接代入します。 Java は、new キーワードを使用しなくても、匿名 String オブジェクトを自動的に作成して変数に格納します。この最適化により、不必要なメモリ割り当てとオブジェクト作成が回避されます。
ただし、String クラスを拡張しない CaseInsensitiveString クラスの場合、リテラルの直接代入は直接サポートされていません。これを可能にするために、2 つのオプションがあります。
オプション 1: String クラスを拡張する
String クラスを拡張して、その動作を継承する CaseInsensitiveString クラスを作成できます。リテラルの直接代入が可能になります。これは、toString() メソッドとquals() メソッドをオーバーライドして、大文字と小文字を区別しない比較を行うことによって行われます。
オプション 2: カスタム コンストラクターのオーバーロード
別のアプローチは、オーバーロードすることです。リテラル引数を受け入れる CaseInsensitiveString のコンストラクター。これは、String 引数を受け取り、s フィールドを自動的に初期化するコンストラクターを提供することで実現できます。
以上がJava 文字列の「new」キーワードを使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。