2

ここではマークから外れているかもしれませんが、次のデバッグ出力を見ると、 (id = 70)line.valueと同じ文字列を参照していることがわかります。name.value2つの文字列は。だけ異なります.count。どのようなコードが同様の結果を出力しますか?これも最適化の結果ですか?(これが少しばかげた/不適切な質問である場合は、事前に申し訳ありません)。 ここに画像の説明を入力してください

4

2 に答える 2

5

通常String.substring()はそれを行います。またはtrim()。(確かに他にもありますが、それは最も明白な例にすぎません。)

sは不変であるためString、同じ文字データの冗長コピーを大量に作成する必要がないように、別の文字列の内部char配列を参照しても安全です。

于 2012-08-20T22:55:36.910 に答える
1

ご覧のとおり、Java文字列は、この文字列の背後の部分を指定するフィールドchar[]とともに、バッキングでoffset構成されています。countchar[]

これにより、呼び出された文字列の一部を返すのようなメソッドはsubstring()、実際に文字をコピーすることなく、より小さな文字列をすばやく返すことができます。

于 2012-08-20T22:56:39.897 に答える