Stringで今日やったミス
以前にも同じミスをしたことあるので戒めも込めて投稿。
for(String animal : Arrays.asList("fox dog wolf horse sheep deer cat nyaa".split("\\s"))) System.out.println(animal);
・・・と書いていて、リストが長くなってきたので、Eclipseでリストの途中を改行してみた。
for(String animal : Arrays.asList("fox dog" + " wolf horse sheep deer cat nyaa".split("\\s"))) System.out.println(animal);
実行結果
fox dog[Ljava.lang.String;@1546e25
文字列の途中で改行加えただけで、結果が変わってしまった><
"fox dog" + " wolf horse sheep deer cat nyaa".split("\\s");
は、
"fox dog" + 文字列配列
を連結したことになってしまう。対処として、
("fox dog" + " wolf horse sheep deer cat nyaa").split("\\s");
のように括弧でくくればおk
修正後
for(String animal : Arrays.asList(("fox dog" + " wolf horse sheep deer cat nyaa").split("\\s"))) System.out.println(animal);
実行結果
fox dog wolf horse sheep deer cat nyaa
他のStringメソッドでも同様の注意をしないといけない
String hoge = "ふぉくすけのしっぽかわいいよ".substring(6); System.out.println(hoge); // しっぽかわいいよ
String hoge = "ふ" + "ぉくすけのしっぽかわいいよ".substring(6); System.out.println(hoge); // ふっぽかわいいよ
まとめ
見やすさのために文字列改行することよくあるけど、
改行するとどの文字列に対してメソッドが実行されるのかを間違えやすいので要注意。