StringBuilder
のappned
が予想していた動きになりません。
StringBuilder
インスタンスをfor
の外で生成した場合
Java
1public class Main { 2 public static void main(String[] args) { 3 StringBuilder sb = new StringBuilder(); 4 5 for (int i = 0; i < 10; i++) { 6 System.out.print(sb.append("■")); 7 } 8 } 9}
予想していた動き
StringBuilder
インスタンスが生成されてsb = null
になるint = 0
のときにsb = null
に■が1つ追加されsb = ■
int = 1
のときにsb = ■
に■が1つ追加されsb = ■■
int = 3
のときに以下略
というようにfor
の条件式の右辺の数の分だけ■が表示されると思っていました。
StringBuilder
インスタンスをfor
の中で生成した場合
Java
1public class Main { 2 public static void main(String[] args) { 3 for (int i = 0; i < 10; i++) { 4 StringBuilder sb = new StringBuilder(); 5 System.out.print(sb.append("■")); 6 } 7 } 8}
予想していた動き
StringBuilder
インスタンスが生成されてsb = null
になるint = 0
のときにsb = null
に■が1つ追加されsb = ■
StringBuilder
インスタンスが生成されてsb = null
になるint = 1
のときにsb = null
に■が1つ追加されsb = ■
というようにfor
の条件式の右辺の数の分とは関係なく最終的には■が1つ表示されると思っていました。
わからないこと
StringBuilder
インスタンスをfor
の外で生成したコードが、なぜ55個になるのかがわかりませんStringBuilder
インスタンスをfor
の中で生成したコードはsb
が都度 New されてnull
で上書きされると思っていたのに、なぜ10個表示されるのかがわかりません
以上、2点です。アドバイスのほど、よろしくお願いたします
回答7件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/11 11:07
退会済みユーザー
2018/03/11 11:29
退会済みユーザー
2018/03/12 02:13
退会済みユーザー
2018/03/12 02:27
退会済みユーザー
2018/03/12 03:15
退会済みユーザー
2018/03/12 04:02
退会済みユーザー
2018/03/12 08:10