上記の最初のスニペットは不要に見えます。ただし、2 番目が必要な場合があります。以下を検討してください。
コンストラクターは、元の文字列の基になる文字配列のコピーString(String)
を取得するので便利です。
なぜこれが便利なのですか?文字列オブジェクトにはその基になる文字配列がsubstring()
あり、既存の文字列を取得すると実際には元の文字配列が使用されることを理解する必要があります。フライ級のパターンです。次のことを考慮してください
String s = longstring.substring(2,4);
文字列s
は、基になる文字配列を指しますlongstring
(やや直感的ではありません)。longstring
(ガベージ コレクションを使用して) ビンに入れたい場合、基礎となる文字配列はまだ参照されているためビンにs
入れられず、2 文字の文字列に膨大な量のメモリを消費する可能性があります。
コンストラクターは、String(String)
構築元の文字列によって参照される文字配列から新しい文字配列を作成することで、これを解決します。元の文字列がガベージ コレクションによって削除されると、その文字配列はsubstring()
結果によって参照されないため、それも削除されます。
この動作はごく最近 Java (リリース 7u4 だと思います) で変更され、文字列は上記の操作モードをサポートしなくなったことに注意してください。