配列とは
・配列(array)とは、同一種類の複数データを並び順で格納するデータ構造。
・配列は中に要素(element)を複数格納しており、要素には添字(index)が0から順に付いている。
・配列も変数と同様でデータ型を指定する。
要素のデータ型[] 配列変数名;
# 例えば
int[] score; #これでscoreをint型の配列変数として宣言している。
score = new int[5]; #配列変数scoreにnew演算子で生成したint型の要素を5つ、代入している。
int[] score = {10,20,30,40,50}; #宣言と初期化を同時に行う。
# 配列変数の宣言と代入を同時に行うこともできる。
int[] score = new int[5];
# 配列の中の要素を取り出す方法
score[0]; #配列変数scoreのなかの1番目の要素を取得できる。
# 配列内の要素を書き換える。
score[0] = 30; #配列変数scoreのなかの1番目の要素に30という値を代入することができる。
# lengthメソッド使用
score.length; #配列変数にlengthというメソッドを使用すると配列内の要素の数を取得できる。
# lengthメソッドは文字列にも使用できる。String型変数名.length()という形になる。
配列をforループで回す。
# 従来のfor文
for (int i = 0; i < 配列変数名.length; i++) {
処理....
} #配列の中の要素数をlengthで取得し、その数の分だけループを回している。
# 拡張for文
for (要素の型 任意の変数名:配列変数名) {
処理...
} #拡張for文で書くと従来のものよりシンプルに記述できる。
# 例えば
for (int value : score) {
処理...
}
メモリと変数と配列
コンピューターは使用するデータをメモリに記録する。メモリの中は基盤の目のように区画整備されており、各区画には住所(アドレス)が振られている。そして変数を宣言すると、空いている区画(どこが選ばれるかわからない)を変数のために確保する(変数の殻によって何区画を使用するかは異なる)。変数に値を代入するとは、確保しておいた区画に値を記録すること。
配列変数には一番最初の要素の一番最初のアドレスが代入されていることになる。つまり配列変数に要素が入っているわけではなく、配列変数のアドレスを参照してその配列変数に所属している要素を取得することができるということになる。
ガベージコレクション
Javaの仕組みの一つ。メモリ上のゴミを排除してくれる。
使用されない変数や配列はメモリを無駄に消費し圧迫してしまう。このメモリのゴミは本来プログラマーが後片付けをしないといけないが、ガベージコレクションという仕組みが常に働いているためメモリのゴミを自動的に片付けてくれる。
NULL
何もないという意味。
使わなくなった配列変数などにNULLを代入することでその配列変数は要素を参照しなくなり、ガベージコレクションの対象になる。
参照型変数には使用できるが基本型変数には使用できない。
int[] score = {10,20,30}; #配列変数の要素に値を代入する。
int[] score = null; #配列変数にNULLを代入。
score[0]; #配列変数にはNULLが入っており、参照できなくなっている。
2次元配列
↓2次元配列とは表のような配列のこと(わかりにくかったらごめんなさいw)
[0][0] | [0][1] | [0][2] | [0][3] |
---|---|---|---|
[1][0] | [1][0] | [1][2] | [1][3] |
[2][0] | [2][1] | [2][2] | [2][3] |
# 2次元配列の宣言
要素の型[][] 配列変数名 = new 要素の型[行数][列数]
# 2次元配列の要素の取得
配列変数名[行の添字][列の添字]