#はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
間違えたものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。
##環境
言語:Java11、JDK13.0.2
動作環境:Windows10
#配列
**配列(array
)**は、同じ型の値をまとめて記憶する機能を持つ。配列を用意するには、以下の手順を踏む必要がある。
- 配列変数を宣言する
- 配列の要素(
element
)を確保する
int[] arrayOfScore;
arrayOfScore = new int[40];
//int型の値を40個記憶できる配列要素の宣言
//もしくは
int[] arrayOfScore = new int[40];
new
演算子を使って配列の入れ物をメモリ上に準備できる。このnew
はクラス
やインスタンス
のときにまた扱う。
例では40を指定しているが、[ ]内の数字は添字(index
)であり配列変数内に用意した配列の通し番号となる。このindex
だが、
Javaにおける配列のindex
は0から始まる
よって最大の番号は「要素数-1」になる。
例の場合、arrayOfScore[0]
からarrayOfScore[39]
までを用意したことになるので、間違ってもarrayOfScore[40]
が存在するものとして呼び出してはいけない。
また、配列は1ラインで初期化することが出来る。
int[] arrayOfScore = {50, 62, 71, 94, 16, 8,};
//これでarrayOfScore[0] = 50;(以下略)を格納したことになる。
//上記式は以下の式に等しい。
int[] arrayOfScore = new arrayOfScore[6];
arrayOfScore[0] = 50;
arrayOfScore[1] = 62;
arrayOfScore[2] = 71;
arrayOfScore[3] = 94;
arrayOfScore[4] = 16;
arrayOfScore[5] = 8;
「変数なのだから、変数として代入できるのではないか」という疑問について。確かに代入可能だが、注意点が一つ。
別の変数を用意してそこに配列変数を代入した場合、「同じ1つの配列を、2つの変数から参照する」ことになるので、片方の中身を変えるともう片方の中身も変わったように見える。
同じ値を持つもうひとつの変数を用意しているのではなく、元となる1つの配列を参照しているだけということを忘れてはいけない。
##多次元配列
配列の要素をさらに配列にする、2次元以上にわたる配列として、Javaは多次元配列を作ることが出来る。Excelの表を想像すれば分かりやすいだろう。
int[][] eightClassesScoreArray;
= new eightClassesScoreArray[40][8]
eightClassesScoreArray[0][0] = 65;
//(以下省略)
//こうしてもよい
int[][] eightClassesScoreArray = {/*(省略)*/},{0,1,2,3,4 ,5 ,6 ,7}
各要素の数は長さをそろえる必要がないため、上記の40対8の配列も可であり、3次元・4次元と次元数が上がり要素数がバラバラでも多次元配列として存在できる。
#実践
//(省略)
int arrayOmikuziPattern[][] = new int[][5];
//とりあえず大吉から5段階は決まった。
//動きだけ見たいから要素からっぽでもよしとする。
for(int checker = 0;checker <5;checker++)
{
System.out.println("あなたの運勢は" + "【未実装】" + "と出ました。);
System.out.println("おみくじ側の結果は" + (arrayOmikuziPattern[][checker]+1) + "番が出ました。");
}
2次元配列の宣言時点でコンパイルエラー。
多次元配列宣言のとき、1次元目の要素数を省略してはいけないらしい。
#終わりに
配列が3Dデータに使われているという話はよく聞く。これからの仕事に直結する可能性もあるので、配列はまた時間をかけて理解したい。
#参考
出来るだけ自分で変数や式を書いてコンパイルしているので、完全に引用する場合はその旨記述する。