1. ホーム

[解決済み】"text "とnew String("text")の違いは?)

2022-04-07 07:41:08

質問

次の2つの文の違いは何ですか?

String s = "text";

String s = new String("text");

解決方法は?

new String("text"); のインスタンスを明示的に作成します。 String オブジェクトを作成します。 String s = "text"; のインスタンスを再利用することができます。 文字列定数プール が利用可能であれば、それを使用します。

あなたは ごくまれに を使いたいと思うことはないでしょう。 new String(anotherString) コンストラクタを使用します。APIから。

String(String original) : を初期化します。 新しく作成された String つまり、新しく生成された文字列は引数の文字列のコピーです。文字列は不変なので、元の文字列の明示的なコピーが必要でなければ、このコンストラクタを使用する必要はありません。

関連する質問


リファレンシャル・ディスティンクションの意味するもの

次のスニペットを調べてみてください。

    String s1 = "foobar";
    String s2 = "foobar";

    System.out.println(s1 == s2);      // true

    s2 = new String("foobar");
    System.out.println(s1 == s2);      // false
    System.out.println(s1.equals(s2)); // true

== を2つの参照型で比較することは、参照同一性の比較です。二つのオブジェクトは equals は必ずしも == . を使用することは、通常、間違っています。 == 参照型では、ほとんどの場合 equals を使用する必要があります。

それでも、何らかの理由で2つの equals でなく == の文字列を使用する場合、あなたは を使用します。 new String(anotherString) コンストラクタを使用します。しかし、もう一度言っておく必要があるのは、これは 非常に は特殊であり、意図したものであることはほとんどありません。

参考文献

関連事項