【Java Silver勉強】配列を簡単にメモしとく
【前置き】
メモ程度に簡単に書いて置くための物になっていますので、正確な情報をお求めの方は、
別のサイトをお勧めいたします。
記述方法
String[] <変数名> = new String[<要素数>];
String <変数名>[] = new String[<要素数>];
String <変数名>[];
String <変数名>[] = {};
String[] <変数名>[][];
String[] <変数名>[][] = new String[<要素数>][][];
特徴
String・int・charなどの修飾子を先頭に書いて、[]
を後につけることによって、なる配列。
詳しくは記述方法の通り。
配列とは、その名前の通り値をまとめて扱う事が可能な変数。
index(添え字) | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
Element(要素) | 10 | 20 | 30 | 40 | 50 | 60 |
添え字「0」には「10」が、「1」には「20」がみたいな感じに要素が参照され、値がまとめて一つの変数で扱えるようになっている。
かってな解釈だが、
int[] val = new int[3];
と書いてあると、メモリ上ではこのように値があるが
アドレス | 値 |
---|---|
10 | 59 |
102 | 20 |
200 | 100 |
配列だと、アドレスを参照してくれるため、
添え字 | アドレス |
---|---|
0 | 10 |
1 | 102 |
2 | 200 |
こういう風な感じに、アドレスを参照して値をまとめて扱っている感じらしいです。
値を配列に代入ではなく、一回メモリに値を格納してそのメモリのアドレスを参照するという方式らしいです。
なので、値直接を扱っているのではなく、メモリ上にある値を集めて扱っているという変数です。
配列の値、「null」なのですが配列のnullは参照切れになります。
どういうことかというと、メモリ上に値がありまして
アドレス | 値 |
---|---|
10 | 59 |
102 | 20 |
200 | 100 |
値を参照してる、配列があるとします。
int[] val = new int[3];
添え字 | アドレス |
---|---|
0 | 10 |
1 | 102 |
2 | 200 |
このまま出力すると、
出力 >> [50, 20, 100]
と出力されます。(出力用コードは省略)
ですが、途中でnullを参照させると、
int[] val = new int[3];
val[0] = 59;
val[1] = 20;
val[2] = 100;
val[1] = null;
System.out.println(val[1]);
NullPointerException
添え字 | アドレス |
---|---|
0 | 10 |
1 | null |
2 | 200 |
出力で、nullとは出ずに、「NullPointerException」とエラーが出てしまいました。
なぜなのでしょう?...
よく考えてみると、配列は変数事態に値を代入してるのではなく、メモリからのアドレスを参照に値を出力や入力をしています。
なので、参照元のアドレスを「null」にしてしまうと、参照切れになってしまい、何も値が参照されなくなってしまいますので、値を入力・出力することが不可能になってしまいます。(個人の解釈)
ということなので、みんな大好きヌルポが例外として出てしまうということです。
まとめ
配列の宣言方法が、多すぎてJavaSilverの勉強中めちゃくちゃ苦戦しました💦
宣言方法が多い理由は、他言語からきた開発者が柔軟に対応できるために宣言方法を増やしたらしいです...
それにしても、多いって...
Discussion