Java String: オブジェクト指向プログラミングにおける一意のエンティティ
Java String オブジェクトはクラスであるにもかかわらず、二重引用符を使用して初期化できます。 。この一見矛盾しているように見えますが、Java 文字列の特殊な性質を調べることで説明できます。
Java の設計上の考慮事項
Java の作成者は、オブジェクト内でプリミティブ型を保持することによる効率の利点を認識していました。指向性のある環境。コール スタックに格納されるプリミティブは、プログラム ヒープに常駐し複雑なメモリ管理を必要とするオブジェクトに比べて、コンパクトなストレージと操作の容易さを提供します。
文字列: ハイブリッド エンティティ
最適なパフォーマンスを実現するために、Java の String オブジェクトはプリミティブとクラスのハイブリッドとして設計されました。効率的な保存や操作など、特定の特性をプリミティブと共有していますが、オブジェクトのようなプロパティも示します。
文字列リテラルとオブジェクト
例を考えてみましょう。
String s1 = "Hello"; // String literal String s2 = "Hello"; // String literal String s3 = s1; // Same reference String s4 = new String("Hello"); // String object String s5 = new String("Hello"); // String object
文字列リテラル (この場合は「Hello」) は共通のプールに保存されます。同一の文字列のストレージ共有を有効にします。対照的に、「new」演算子を使用して作成された String オブジェクトはヒープに保存され、ストレージ共有の恩恵を受けません。
注: 文字列リテラルは文字列定数プールに保存されます。定数が保存されるメモリ内の場所です。これにより、2 つ以上の変数が同じ文字列値を参照する場合、複数のコピーを作成するのではなく、実際にメモリ内の同じオブジェクトを参照することが保証されます。
以上がJava の文字列オブジェクトは、その原始的な動作とオブジェクト指向の性質をどのように調和させているのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。