今回で3回目となる
「Javaプログラミングでの陥りやすいミス」
シリーズ
今回のテーマは『配列の扱い方』です。
さて、配列とは何だったでしょか?
「複数の値を連続的に並べて
ひとまとめに扱うデータ構造」
これを配列と言います。
では、Javaで配列を使用するには?
まず初めに、
「配列の宣言と生成」が必要となります。
配列の宣言と生成
配列の宣言・生成方法には、
次の2種類があります。
① 型名[] 配列名;
配列名 = new 型名[要素数];
② 型名[] 配列名 = new 型名[要素数];
上記の2つは同じ意味で、
単に、①を1行で表現したものが
②になります。
また、配列を生成する際には、
new演算子を使用し、
配列に格納する値(要素)の数を
「要素数」で指定します。
具体的には、以下のようになります。
a = new int[3];
上記は、整数の値を3つ格納できる
aという配列になります。
しかし、以下のような書き方は、
コンパイルエラーになりますので
注意してください。
配列の初期化
配列の宣言と生成が終わったところで、
今度は配列に値を入れていきます。
配列に初めて値を入れることを
「配列の初期化」と言います。
配列の初期化方法は、
次の3種類があります。
a[0] = 10;
a[1] = 20;
a[2] = 30;
①は、
配列の宣言と生成が終わった後、
[]の中に
配列の何番目に値を入れるかを
指定して初期化しています。
②は、
配列の生成と同時に値を指定して
初期化しています。
ただし、
以下のように要素数を指定して
初期化すると、
コンパイルエラーになるため
注意が必要です。
要素数を指定しなくとも、
{}内の値の数がそのまま要素数となる、
ということです。
③は、一見すれば
コンパイルエラーになりそうですが、
Javaでは、
new演算子を使用せずに宣言した配列に
直接値を入れて初期化することもできます。
配列の代入
ここまで、「配列の宣言と生成」と
「配列の初期化」について
方法と注意点をお話してきました。
最後に、
配列を扱う上で一番陥りやすいミス
「配列の代入」についてみていきます。
では早速、
以下の例を考えてみましょう。
int[] b = a;
a[0] = 50;
System.out.println(b[0]);
さて、上記の結果は
どう表示されるでしょうか。
10
ではありません。
50
と表示されます。
なんで??と思われた方は、
前回の「文字列の比較」の最後を
思い出してください。
上記の例は、
String str2 = str1;
と同じです。
"あ"という文字列は1つだけ生成され、
変数str1と変数str2には同じ"あ"の場所が
格納されます。
今回の場合も、
{10, 20, 30}という値は1つだけ生成され、
配列aと配列bには同じ{10, 20, 30}の場所が
格納されるのです。
配列も文字列同様、
new演算子によって生成されます。
そのため、
配列名(aやb)には実際の値ではなく、
その値の場所が格納されます。
new演算子は、
生成した値の格納場所を返す
「演算子」なのです。
これにより、
配列aの値を変更することは、
配列bの値を変更することになるため、
b[0]の値も50になります。
配列を扱う際には注意点が多いので、
慎重にプログラミングしてください。
-------------------------------------------------------
■□お知らせ□■ 新しいLAブログができました。
初心者向け】快適なプログラミング環境を作るパソコン選びのポイント6つ
どのPCを買えばいいか迷いますよね。他にも役立つ情報が盛りだくさん。
是非ご覧ください。
------------------------------------------------------