Javaの配列リテラルは宣言時にしか使えないのか!
知らなかった。下記のコードはOKだと思ってた。
int[] i; i = {1,2,3}; // コンパイルエラー
正しくは無名配列を使う。
int[] i; i = new int[]{1,2,3};
SJC-Pの試験対策で配列の勉強をしていた時、説明に違和感を感じていたんだよなー。多分、このことに気づいていなかったんだなー。でも、なぜできないんだ? もしかして、配列の型がわからないからか?
int[] i; i = {1,2,3}; // この{}の型を決められないから?(short[]の場合もあるし)
宣言時の場合は、{}の型は自ずと決まる(変数の型と同じ)。
int[] i = {1,2,3}; // この{}の型は、当然int[]だからOKってこと?
そういう理解にしておこう。
あ、そういうことか。JavaScriptは変数に型がないからOKなのかな。
var a1 = {1,2,3,4,5}; // OK var a2; a2 = {1,2,3,4,5}; // OK(しかも配列リテラルからはArrayオブジェクトしか生成されない)
なるほどー。