「Java言語」の「配列」を学ぶ
今回は「配列」について学んでいきたいと思います。
いろんなデータを「まとめて扱える」っていうことしか覚えていないので、「配列」についてほとんど忘れていることに気が付きました(--)
前に「プログラミング」を学んでからだいぶ経っているので、もう一度、勉強し直していきたいと思います。
「配列」の仕組み
「変数」の場合は、プリミティブ型のデータを「1つ」しか扱えないので、たくさんデータを扱う場合は「配列」を利用していく方がプログラムも書きやすくなるみたいです。
「配列」の作り方
「配列」を作る場合は、
データ型 配列名[] = new データ型[データ個数]
のように書いていきます。
「値」を配列に格納する場合は、
配列変数名[要素番号] = 格納するデータ;
のように書きます。
実際にプログラムを作ってみると、
int data[] = new int[3]; data[0] = 1; data[1] = 2; data[2] = 3;
のようになります。
「配列」の使い方
「配列に格納した値」を利用するには、
int total = data[0] + data[2]; System.out.println("合計:" + total);
のように書いていきます。
このプログラムを実行すると、
合計:4
のように表示されます。
「配列」と「for文」を組み合わせてみる
「配列」と相性が合っているのが「繰り返し文」というのを以前に学んだので、「for文」を利用したプログラムを作ってみたいと思います。
String members[] = {"Hayato Okazaki","Youko Nishiyama","Kaito Doujima", "Yurika Kayama", "Takeshi Koguma"}; for( int i = 0; i < members.length; i++ ) { System.out.println(members[i]); }
のように「メンバーの名前」を配列にして「for文」で表示してみました。
このプログラムを実行すると、
Hayato Okazaki Youko Nishiyama Kaito Doujima Yurika Kayama Takeshi Koguma
のように表示されます。
再び「拡張for文」
ここで・・・
「繰り返し処理」のところで出てきた「拡張for文」を勉強してみたいと思います。
さっきのプログラムを「拡張for文」で書いてみると・・・
for ( String name: members ) { System.out.println(name); }
のようになります。「for文」が少し短く書けていますね~。
こっちの方が慣れたら使いやすそうです。
「拡張for文」は「データの集まり」を処理したいときに使われるそうです。・・・なるほど。
まだ実際の利用イメージが思い浮かばないけど、短く書けることは理解できました。
あと、「処理速度」も「for文」と比べて「拡張for文」の方が早いみたいです。
「多次元配列」を学ぶ
他のプログラム言語を学んだ時に苦手だった「多次元配列」を学んでいきたいと思います。(今回は何とか克服したい・・・)
「配列の要素」の中にさらに「配列」が入っているのが「多次元配列」なのですが、何層にも渡って配列を作ることができます。
「深い配列」は混乱しそうなので、「2次元配列」を作りながら学んでいきたいと思います。
2次元配列
「2次元配列」を作るには、
データ型 配列変数名[][]
のように書いていきますが、深い階層になるほど「カッコ」の数が増えていきます。
「2次元配列」を作ってみると、
int numbers[][] = new int[3][3]; numbers[0][0] = 1; numbers[0][1] = 2; numbers[0][2] = 3; numbers[1][0] = 4; numbers[1][1] = 5; numbers[1][2] = 6; numbers[2][0] = 7; numbers[2][1] = 8; numbers[2][2] = 9;
のようになりますが、「2次元配列」は「表形式」で表すことができます。
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
表形式で表すと、
numbers[行][列]
のようになっていますね。
前より少し理解が進んだ気がしますが複雑なプログラムになると混乱してしまいそうです(^^;)
「2次元配列」の値を全て取り出したい場合は、
for ( int num_array[]: numbers ) { for ( int value: num_array ) { System.out.println(value); } }
のように、さっき学んだ「拡張for文」でも取り出すことができました。
普通の「for文」より、こっちの方が取り出しやすいですね。
「プログラミング」って「わかった」と思っても実際にプログラムを書いてみると、思っていたより理解できていなかったということが多々あるので、プログラムを書いて学んでいくことが大事なんだな~と実感してます。
どこまでできるかわからないけど、ちょっとずつ「Java言語」の学習を続けていきたいと思います。