Java の文字列作成の明確化: "String s = new String("silly")" の再考
Java における String オブジェクトの作成はよく質問されるトピックです。そのような質問の 1 つは、リテラルを割り当てるときの String と他のクラスの使用法の違いに関するものです。
「CaseInsensitiveString cis = new CaseInsensitiveString("Polish")」はなぜ正しいのですか?
ステートメント「CaseInsensitiveString cis = new CaseInsensitiveString("Polish")」は確かにString は Java の一意のクラスであるため、正解です。この動作は、CaseInsensitiveString などの他のクラスには適用されません。
String の特殊な動作を理解する:
他のクラスとは異なり、String には、この独自の動作を可能にする特定の固有の特性があります。 :
CaseInsensitiveString を String のように動作させる方法:
CaseInsensitiveString を String のように動作させるには、次のようにします。ただし、そのコンストラクターをオーバーライドし、渡された文字列リテラルを手動で文字列プールにインターンする必要があります。これには、JVM の内部文字列プールへのアクセスが必要であり、慎重に行わないとパフォーマンスの問題が発生する可能性があります。
結論:
要約すると、String は、リテラルを使用した簡略化された初期化を可能にする Java。 CaseInsensitiveString などの他のクラスにはこの動作がなく、適切なコンストラクターを使用して明示的に構築する必要があります。
以上が`new String('silly')` と同じように `new CaseInsensitiveString('Polish')` を使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。