【Javaプログラミング超入門 #09】配列(1)

 

みのる
こんにちは。笑顔で感謝!✨ みのるコーチです。
今回も、ご覧いただき、ありがとうございます。

今回は

Java超入門 #9
Java の 配列

というテーマでお送りします。

彩香
変数との違いなど、理解して使えるようにしたいです。
頑張ります。今回も、よろしくお願いします。
剛留
段々とJavaプログラミングが分かってきました。
今回も、頑張って勉強します!
みのる
それでは 早速 行ってみましょう。

【Youtube版】

Youtubeでもお伝えしていますので
是非チェックしてくださいね。

【1】配列とは

配列
✅ 同じ型のデータを
  ひとくくりにして管理すること。

変数は箱というお話をしてきましたが

配列は、同じデータ型の箱をひとくくりにして
管理するイメージです。

ポイントは、同じ型 という事です。

例えば、テストの点数を考えましょう。

Aくんの点数、Bくんの点数、Cくんの点数
Dくんの点数 を扱いたい場合です。

別々の変数に 値を格納して処理する事も できますが

配列として 纏めておいたほうが
処理しやすいという 利点があります。

このあたりは、今後 プログラミングしていくと
段々と 配列の便利さも 分かると思いますので…

今のところは、このようなイメージを押さえておきましょう。

また、配列は「ひとくくりの箱」全体に名前をつけます。
この名前を

配列名

といいます。

そして、配列の中の1つ1つの箱の事を…

配列の「要素」

といいます。

彩香
「同じ型」のデータを
「ひとくくり」にして扱うのが配列なのですね。

確かに、まとめておいたほうが
便利で 分かり易い感じがします。

剛留
配列全体につける名前が「配列名」で
その中の1つ1つが「要素」ですね。

バッチシです!

【2】配列の宣言

変数で、箱を準備する事を 宣言と言いましたが
配列の場合にも 一連の箱を準備することを 宣言といいます。

ここでは、Javaでの、基本的な

宣言の方法

を見ていきましょう。

配列の宣言
データ型[] 配列名;
配列名 = new データ型[要素数];

データ型の後に 配列である事を示す
[] (大括弧・角括弧) をつけて
その後に、配列名を記述します。

ただ、これだけでは一連の箱が 準備されていません。

new 演算子 を使って
どのデータ型を何個準備するかを記述します。

例を見てみましょう。

int[] array;
array = new int[3];

この場合は、int型で 配列名 は array
3 個の箱を準備しました。という意味になります。

そして、この 2 行は 1行 で書くこともできます。

データ型[] 配列名 = new データ型[要素数];
(例)
int[] array = new int[3];

定型的に使われるので、この 1 行で書くほうを
覚えておくと良いでしょう。

そして、この文(ステートメント)と
一連の箱のイメージを結びつけておきましょう。

彩香
new 演算子で 一連の箱を準備するんですね。

配列名の宣言と、箱の準備を
1行で記述するほう分かりやすいです。

剛留
一連の箱をイメージすること、確かに大切と思います。
データ型 と 要素数 を考えてイメージします。

【3】配列の要素

配列の1つ1つの箱を「要素」といいますが
Javaでは、このように表現します。

配列の要素
配列名[添字(インデックス)]

配列名の後に [](大括弧・角括弧)を記述して
その中に添字(インデックス)を記述します。

この添字は、要素の番号を表します。

配列の中で何番目かということですが
注意ポイントは、この番号は 0 から始まることです。

例えば int型配列 array 要素数 3 があるとします。
要素の表現は、先頭から
array[0]、array[1]、array[2] となります。

インデックスは 0 ~ (要素数 – 1) であること
覚えておきましょうね。

そして、配列は 要素の単位で 代入・参照ができることも
チェックポイントです。

配列の要素が、変数と同様に扱えるということです。

<変数の場合(復習)>

(代入)a = 10;
(参照)result = a + 5;

変数の場合 代入の式で
a = 10; と記述すると

a という箱に10を入れる…
という風に 箱主体で考えました。

参照する場合には、このような式で

a と書くだけで a の値をコピーして
取り出して使うことができましたね。

配列要素の代入・参照
(代入)array[0] = 10;
(参照)result = array[0] + 5;

配列の要素の場合も同様に考えます。

代入の場合、このように記述すると
配列arrayの 0 番目の要素に10を代入する。
( 0 番目の箱が主体)という事になります。

そして
参照の場合、このように記述すると、

配列 array の 0 番目の要素の値を
コピーして取り出して使う。という意味を表します。

また、配列の要素数は

配列の要素数
配列名.length

で取得することができます。

例えば、このようにプログラムを書いた場合を考えます。

int[] array = new int[3];
System.out.println(“要素数:” + array.length);

int型の 要素数 3 の配列arrayを 宣言しています。

そして、System.out.println で “要素数:”の後に
array.lengh を表示すると…。

要素数:3

このように「要素数:3」 と表示されます。

「配列名.length」で要素数を取得できること
ここも、押さえておきましょうね。

彩香
インデックスは 0 から始まるんですね。

ついつい、1番目・2番目…と数えてしまいそうなので
ここは 忘れないようにします。

剛留
基本的に、「配列の要素」を「変数」と同じように
扱えるということなんですね。

そして要素数の表現「配列名.length」も
しっかり、覚えました。

【4】配列要素の初期化

①初期化の記述方法

配列を宣言して、各要素に値を代入する時に
このように記述できることを学びましたね。

int[] array = new int[3];
int[0] = 10;
int[1] = 20;
int[2] = 30;

この、配列の宣言と各要素への値の代入(初期化)は
一緒に行うことができます。

記述方法は

データ型[] 配列名 = { 初期値をカンマ区切りで記述 };

このように記述します。

右辺は 波括弧で囲んでブロックにして
配列の要素の初期値を カンマで区切って記述します。

例えば、このように記述できます。
int型配列 array を宣言して、要素を 10, 20, 30 で初期化します。

int[] array = new int[3];
int[0] = 10;
int[1] = 20;
int[2] = 30;
 ▼ ▼
int[] array = { 10, 20, 30 };

中括弧で囲むことと
カンマで区切ることを 覚えておきましょう。

②自動的に初期化

配列の場合には、new 演算子で箱を準備した時に 各要素の値は
既定値(Javaで定められた値)で 初期化されます。

例えば

int[] array = new int[3];

…と書いた場合、配列 array の各要素は
0(数値の既定値)で初期化されています。

変数の場合には、初期化や代入を行わずに
参照を行うとコンパイルエラーになりましたが

配列の要素の場合には、エラーにはならず
参照することができます。

この例の場合には、要素に値を代入せずに
参照して、値が 0 と表示されます。

int[] array = new int[3];
System.out.println(“0番目の要素:” + array[0]);
 ▼(表示結果)▼
0番目の要素:0

そして、この既定値ですが
このように定められています。

数値型(byte/short/int/long/float/double)
の場合には 0

char型の場合には、文字コード0
(これは、’0’という文字ではありません。目視できません。)

boolean型の場合には false

Stringなどの参照型 の場合には
参照している番地が無い事を表す null という値になります。

剛留
配列の要素の初期化は、しなくても大丈夫ってことですか?
みのる
既定値で初期化されるので、それを分かっていれば大丈夫です。

ただし、プログラムを分かりやすくするという点では
その旨を コメントに書いておくほうが良いですね。

後から見た時に
・初期化を忘れているのか?
・既定値で初期化された値を使っているのか?
判別がつきやすい事が大切ですね。

このあたりも考慮できると良いと思います。

剛留
はい、分かりました!

【5】String型の配列

今までの例で int型の配列を見てきましたが
この配列は、全てのデータ型に対応しています。

基本データ型だけでなく、参照型でも同様です。

ここでは、String型の例を見てみましょう。

例えば

String[] strArray = new String[3];

strArray[0] = “文字列1”;
strArray[1] = “文字列2”;
strArray[2] = “文字列3”;

System.out.println(“0番目の要素:” + strArray[0]);

このように、要素数3の文字列型の配列の宣言ができます。

要素への値の代入もできて、要素の参照もできます。

また、宣言と要素の値の代入の部分は
このように 書くこともできます。

String[] strArray = new String[3];

strArray[0] = “文字列1”;
strArray[1] = “文字列2”;
strArray[2] = “文字列3”;
 ▼(このよう書けます)▼↓
String[] strArray = {
“文字列1”,
“文字列2”,
“文字列3”
};

剛留
String型で配列が使えると、何だか便利そうに思えます 。
まだ、何となくですが…。

【まとめ】

【Java超入門 #09】配列(1)

【1】配列とは
・ 配列とは、同じ型のデータを
  ひとくくりにして管理すること。
・ 配列全体に配列名をつける。
・ 配列の中の1つ1つを要素という。
【2】配列の宣言
・ 記述方法①
  データ型[] 配列名;
  配列名 = new データ型[要素数];
・ 記述方法②
  データ型[] 配列名 = new データ型[要素数];

※ 簡潔に②で記述することがお勧め。

【3】配列の要素
・ 要素の表現
  配列名[添字(インデックス)] ・ 添字(インデックス)は
  要素の番号で 0 から始まる。
・ 要素数の取得
  配列名.length
【4】配列要素の初期化
① 初期化の記述方法
  データ型[] 配列名 = { 初期値,初期値… };

② 自動的に初期化
  ・ Javaの既定値で初期化される
    例えば数値の場合は
    0 で初期化される

【5】String型の配列
・ String型の配列も作れる。
・ String型配列の例
  String[] strArray = new String[3];
  strArray[0] = “文字列1”;
  System.out.println(“0番目の要素:”
           + strArray[0]);