明解Java入門編 第6章まとめ
配列
同一型の変数である構成要素が直線状に並んだもの。
同一型の変数の集まりをひとまとめにする。
個々の構成要素の型である構成要素型はなんでも良い。
配列内の個々の変数を識別するため番号が必要(0から始まる連番)。
配列の要素数が既知の定数であればその値をfinal変数で表すと良い。
配列変数の宣言
普通の変数と同様、配列にも宣言が必要。
int a;
int a;
どちらでも構わない。
この宣言により作られるaは配列変数と呼ばれる特殊な変数である(配列の本体ではなく、配列本体を参照する変数)。
配列本体の生成
配列変数とは別に生成する。
newによって生成。
構成要素のアクセス
配列本体内の個々の要素のアクセス(読み書き)はインデックスを中に与えることにより行う。
配列変数名[インデックス]
配列a中の先頭からi個後ろの構成要素はa[i]としてアクセスできる。
既定値
配列の構成要素は明示的に初期化しなくても0で初期化される(規定値)。
要素数の取得
配列の要素数は長さと呼ばれる。
配列の長さ=要素数は"配列変数名.length"によって取得できる。
配列の初期化と代入
配列に与える初期化子は各要素に与える初期化子◯,△,□をコンマで区切って{}で囲んだ[◯,△,◻︎}という形式である。
inta;
a={1,2,3}; ×
inta;
a=new int{1,2,3}; ◯
new演算子による配列の生成時は"new 要素型"の後ろに初期化子をつけてもいいことになっている。
走査
配列要素を順にひとつずつなぞっていくこと。
探索とキー
ある値をもつ要素の存在を調べることと調べる値のこと。
キー値と同じ値が配列中にあるとは限らない。
線形探索または逐次探索
配列の要素を先頭から順に走査することにより探すべきキー値と同じ要素に出会う探索のアルゴリズムのこと。
キーと同じ値の要素が複数個存在する場合、その中で最も先頭に位置する要素をみつける。
拡張for文(for-in文,for-each文)
配列の走査を簡潔にかける。配列の要素数を調べる手間が省ける。
配列の全要素を走査する過程においてインデックス自体の値が不要であればその走査は拡張for文によって実現すると良い。
例) for (型 i : a)
:は〜の中のという意味である。
配列のコピー
代入演算子によって配列を代入しても全要素がコピーされるわけではなく、参照先が変更されるだけ。
配列をコピーする際は繰返し文によって全要素を逐一コピーする必要がある。
文字列の配列
配列の型はStringとなる。
参照型とオブジェクト
newで生成される配列本体は通常の変数と違いプログラムの実行時に生成されそのための記憶域が動的に確保される。
配列の本体は通常の変数とは性質が異なるためオブジェクトと呼ばれる。
オブジェクトを指すための変数の型が参照型である。
配列変数の型である配列型は参照型の一種である。
空型と空参照・空リテラル
nullは空リテラルと呼ばれる。
空リテラルが代入されたaは空参照となる(何も参照していないことを表す特殊な参照。型は空型)
空参照を出力するとnullと表示される。
ガーベジコレクション
配列変数に対してnullを代入したり、他の配列本体への参照を代入するともともとの配列本体はどこからも参照されないゴミとなる。
ゴミの放置は記憶域の不足を招く。
どこからも参照されなくなったオブジェクト用の領域は再利用できるよう自動的に解放される(ガーベジコレクション)
finalな配列
配列変数はfinal変数として宣言することができる。
finalとなるのは参照先で個々の要素の値は書き換えられる。
配列変数をfinalとしておけば誤ってnullを代入したり、他の配列本体への参照を代入したりすることを防げる。
多次元配列(この本での表現)
配列の構成要素自体が配列である状態。
2次元配列
例)『int型を構成要素型とする配列』を構成要素型とする配列
3次元配列
例)『long型を構成要素型とする配列』を構成要素型とする配列
配列わけわからなくなってるので簡単なとこからやり直すように。