Androidというよりも、Javaのなのですが文字列の結合でよく使うStringBuffer,StringBuilderですが、惜しい使い方をしているのをよく見かけます
文字列の結合で最も簡単なのは次のような書き方です
※nameは文字列で事前に定義されているとします
String text = "私の名前は" + name + "です";
+での文字列結合は、無駄に文字列を生成してしまうので良くないとされています
そこで使われるのがStringBufferやStringBuilderです
で、表題の「惜しい」という点は、こんな書き方です
StringBuilder text = new StringBuilder();
text.append("私の名前は" + name + "です");
例としてすこし大げさに書いていますので、普段はこんな書き方しないと思います
ここで言いたいのは「惜しい」書き方としてappendの中で+(プラス)での文字列結合を使用している点です
これではStringBuilderを使う必要ないですよね
書くのであれば、次のようにしましょう
StringBuilder text = new StringBuilder();
text.append("私の名前は")
text.append(name);
text.append("です");
行が多くなってイヤだな。とおもわれる場合は次のようにもできます
StringBuilder text = new StringBuilder();
text.append("私の名前は").append(name).append("です");
まぁ・・・可読性が落ちてしまうのが難点です
文字列結合による速度の低下は結構大きいので、ループの中で+(プラス)による文字列結合とかを見つけたら、改善していきましょう
文字列の結合で最も簡単なのは次のような書き方です
※nameは文字列で事前に定義されているとします
String text = "私の名前は" + name + "です";
+での文字列結合は、無駄に文字列を生成してしまうので良くないとされています
そこで使われるのがStringBufferやStringBuilderです
で、表題の「惜しい」という点は、こんな書き方です
StringBuilder text = new StringBuilder();
text.append("私の名前は" + name + "です");
例としてすこし大げさに書いていますので、普段はこんな書き方しないと思います
ここで言いたいのは「惜しい」書き方としてappendの中で+(プラス)での文字列結合を使用している点です
これではStringBuilderを使う必要ないですよね
書くのであれば、次のようにしましょう
StringBuilder text = new StringBuilder();
text.append("私の名前は")
text.append(name);
text.append("です");
行が多くなってイヤだな。とおもわれる場合は次のようにもできます
StringBuilder text = new StringBuilder();
text.append("私の名前は").append(name).append("です");
まぁ・・・可読性が落ちてしまうのが難点です
文字列結合による速度の低下は結構大きいので、ループの中で+(プラス)による文字列結合とかを見つけたら、改善していきましょう
StringBuffer,StringBuilderの惜しい使い方