3
    StringBuilder str = new StringBuilder("Today");
    str.append(" is ").append("a").append(" sunny ").append(" day.");

上記のJavaコードでは、最初にStringBuilder型のオブジェクトを作成したことを理解しています。次に、オブジェクト参照strを使用して、StringBuilderクラスのappendメソッドにアクセスしました。この後、私は道を失います。メソッドappendは、appendメソッド内のstr.append( "is")の後に使用されますか、それともこのクラスで同じメソッドを呼び出していますか?さらに、上記のステートメントの実行の流れを誰でも説明できますか。上記のappendメソッドのどれが最初に実行されますか?

4

4 に答える 4

6

appendメソッドの戻り値はStringBuilderオブジェクト自体です。したがって、呼び出しを連鎖させて、文字列にさらに文字を追加できます。そうしないと、StringBuilderオブジェクトをすべての行で参照し続ける必要があるため、コードが非常に読みにくくなります。

于 2012-05-27T12:02:55.427 に答える
5

str.append(" is ")StringBuilder自体を返します。メソッドによって返されたオブジェクトに対してメソッドを呼び出しています。それはするのと同じです

user.getAddress().getStreet().charAt(0);

コードを除いて、各append()メソッド呼び出しは同じオブジェクトを返します。これにより、複数のメソッド呼び出しを同じStringBuilderにチェーンできます。

于 2012-05-27T12:04:00.993 に答える
3

Builderパターンを確認することを検討してください(ページの終わりに向かって下にスクロールします)。基本的に、オブジェクトは常にそれ自体を返すため、多くのコマンドを連鎖させることができます。

于 2012-05-27T12:15:43.547 に答える
1
StringBuilder str = new StringBuilder("Today");
str.append(" is ").append("a").append(" sunny ").append(" day.");

ここで、再び methnodを呼び出しているstr.append(" is ")オブジェクトを返します。StringBuilderappend("a")

str.append(" is ").append("a")もう一度参照を返し、メソッドStringBuilderを呼び出しappend(" sunny ")ています。

つまり、基本的にはメソッドを連鎖させているだけです。

于 2012-05-28T06:41:47.870 に答える