- 99 名前:デフォルトの名無しさん [2008/06/06(金) 19:48:09 ]
- StringBuilder sb = new StringBuilder(2000);
sb.append("<html>" + "<title>かけざんの苦苦</title>" + "<body>"); sb.append("<table>"); for (int i=1; i<=9; i++) { sb.append("<tr>"); for (int j=1; j<=9; j++) { sb.append("<td>" + i*j + "</td>"); // ←ココ } sb.append("</tr>"); } sb.append("</table>"); まぁ、こんなコードに出合ったワケですよ。 sb.append("<td>" + i*j + "</td>"); に注目してください。 これは、実はコンパイル時にこう展開されるんです。 sb.append( new StringBuilder("<td>").append(i*j).append("</td>").toString() ); なんか変です。StringBuilder の append の中に StringBuilder が生成されて さらに toString() つまり String オブジェクトに変換されてから、元の sb に append されるワケです。 sb を StringBuilder で宣言したのは、無駄なオブジェクトの生成を抑えて効率よく処理するためな筈なのに 結局は見えないところで String オブジェクトの生成・破棄がなされてたワケです。 無駄ですね。こんなおバカなコード書くのって恥ずかしいですよね。 じゃぁ実際どう書けばいいかというと、 sb.append("<td>").appned(i*j).appned("</td>"); なワケですが、これがメンドクサイ。いちいち ).appned( で連結するのがヒジョーにメンドクサイんです。 見た目も横に長〜いコードになりがちで、パッと見てわかりにくい。 なんか便利な方法は無いですか?みなさんは、せっせと ).appned( を書きまくってるんですか?
|

|