2

私は呼び出しています

sb.append(i+"\n");

どこ

StringBuilder sb= new StringBuilder();
int i. 

ここへのi+"\n"キャストとは何ですか? StringStringBufferCharSequence、文字配列、...?

StringBuilderには、それぞれObjectStringStringBuilder (これはプライベート メソッドです)、StringBufferCharSequenceパラメータ、文字配列などの param を取るappend()があります。これらのどれが呼び出されているかを調べようとしています-高速処理のため に文字列パラメーターの呼び出しを回避しようとしています。

前もって感謝します。

4

1 に答える 1

8

演算子が aおよびその他の型の変数に+適用されるときはいつでも、連結が行われます。の値はです。StringStringi + "\n"String

Java言語仕様はこれをカバーしています

1 つのオペランド式のみが String 型である場合、文字列変換 (§5.1.11) がもう一方のオペランドに対して実行され、実行時に文字列が生成されます。文字列連結の結果は、2 つのオペランド文字列を連結した String オブジェクトへの参照になります。新しく作成された文字列では、左側のオペランドの文字が右側のオペランドの文字よりも前になります。

したがって、呼び出されるメソッドは引数append()を受け入れるメソッドです。String

@scottb がコメントしているように、Java はまずString連結に含まれるオブジェクトをオブジェクトに変換しStringます。これについては、変換に関する JLS の章で説明されています。Stringプリミティブは、そのラッパー タイプにボックス化されていません。参照が 以外の場合nulltoString()メソッドは参照先のオブジェクトで呼び出されます。参照がnullの場合、String "null"が使用されます。

于 2013-11-12T01:57:22.873 に答える