配列の初期化というと難しく聞こえるが、実際には難しい話ではない。配列の初期値全部をゼロにしたり、値を入力したりするのが「初期化」だ。
このページではJava配列の初期化についてお伝えする。
Javaの配列の初期化
配列の初期値
配列は、宣言して生成した時点で何かしらの初期値が配列の各要素に代入されている。
プリミティブ型であれば何かしらの値(ex. intならば「0」)が初期値として設定されており、これは単一の変数を宣言したときと同じだ。
また、オブジェクト型の場合は各要素にnullが設定されている。
このように、単一の変数を宣言した時同様に、配列を生成すると何かしらの初期値が設定されており、このような初期値を「暗黙の初期値」と呼ぶが、一般的にこの「暗黙の初期値」を利用する事は望ましくないとされている。
暗黙の初期値を避けるべき理由
なぜならば、プログラム言語によって初期値は異なるため、一見しただけではどのような値が入っているのかが分かりにくいからだ。
例えば、javaでint型の変数を宣言すれば「0」が入っているようだが、C言語と呼ばれるプログラム言語は「不定」といって何が入っているのかはわからない。
そのような事情から、プログラム製作者の認識が統一できず、プログラム自体が思わぬ動作をしてしまうこともある。
その為、暗黙の初期値は使用しないというのが慣例となっている。
単一の変数では、暗黙の初期値を参照する処理はコンパイルエラーとすることが出来るが、配列の場合はコンパイルエラーとならない。その為、意識的に初期化をしなければプログラムの重大な欠陥を見過ごしてしまうこともある。
配列を使用する際には、生成直後に必ず初期化処理を行う癖をつけよう。
初期値の設定方法
初期化の具体的な方法は、各要素への値の代入だ。
color[0] = "赤";
これまでもお伝えしてきたもので、特に変わったものでもない。配列の宣言と同時に初期値を設定することも可能だ。
String color[] = {"赤","青","黄"} ;
この場合、3つの初期値を設定しているので、配列の長さは「3」となる。
数値型の場合は
int number[] = {1,2,3,4,5} ;
という書き方ができる。
オブジェクト型の配列の場合、各要素の初期値にnew演算子を使用した初期化式を利用する事もできる。
Date date[] = {new Date(),new Date(), new Date()} ;
書き方について補足をすれば、最後の要素の後に、「,」が余分に付いていても構わない。
どのようなときに使うかというと
1 2 3 4 5 |
String message[] = { "登録しました。", "名前が入力されていません。", "住所が入力されていません。", } ; |
というように、並べて書き足すような場合だ。
最後の要素を意識せずに「,」を書くことが出来るので、つまらないコンパイルエラーに悩まされずに済む。
意外に便利な記述方法なのだが、現時点ではよくわからずとも構わない。使っていくうちにわかるだろう。
まとめ
このページではJava配列の初期化についてお伝えした。言葉は難しく聞こえるが、配列の初期値を入れましょうね、というだけの話だとまずは思っておけばいいだろう。
コメント