HOME技術JAVAJAVAの配列変数の宣言

JAVAの配列変数の宣言

配列変数とは、変数を1つのグループとして使う方法です。
変数名は同じだけれど、[1]、[2]、[3]…とその変数の要素を設定できます。
JAVAでは配列変数を以下のように表します。

int[] Hairetsu; // int型の配列変数、Hairetsuを宣言
Hairetsu = new int[5]; // Hairetsuにint型の要素を5つ用意する

これを1つに省略して書くことができます。

int[] Hairetsu = new int[5];

配列の要素に値を代入する

配列変数の要素に値を代入するには、以下のように書きます。

Hairetsu[0] = 1; // Hairetsuの1番目の要素に1を代入

なお、宣言した要素数以上の数を指定して代入しようとするとエラーになります。

配列の宣言と同時に値を代入する

以下のように書くと、配列変数を宣言したと同時に、各要素に値を代入することができます。

int[] Hairetsu = new int[] { 1, 2, 3, 4, 5 };

なお、省略して書くこともできます。

int[] Hairetsu = { 1, 2, 3, 4, 5 };

配列の要素数を調べる

配列の要素がいくつあるかを調べたい場合には、以下の様に書きます。

Hairetsu.length

for文で配列変数の要素数分ループする

配列変数の要素数分のループをして処理させたい場合には、通常のfor文とは異なる書き方をします。

for ( int Data : Hairetsu ) {
System.out.println ( Data );
}

Hairetsuという配列変数の各要素の値を、Dataという変数に代入し、表示します。
これは以下のように書いたことと同じ意味をなします。

for ( int i=0; i<Hairetsu.length; i++ ){
Data = Hairetsu[i];
System.out.println( Data );
}

配列の削除

配列と要素の関係

配列変数を宣言すると、その配列変数が生成されます。
次に、その配列の要素を宣言するので、要素が生成されます。
つまり、配列変数とは、要素を格納する入れ物にすぎません。
要素は配列変数とは別個に存在しています。
配列変数は、別に宣言された配列の要素を参照しているだけなのです。

int[] Hairetsu = { 1, 2, 3, 4, 5 };
System.out.println ( Hairetsu[0] );

上記の結果は、「1」が表示されます。

int[] Hairetsu = { 1, 2, 3, 4, 5 };
int[] Hairetsu2;
Hairetsu2 = Hairetsu;
System.out.println ( Hairetsu2[0] );

上記の結果も、「1」が表示されます。

int[] Hairetsu = { 1, 2, 3, 4, 5 };
int[] Hairetsu2;
Hairetsu2 = Hairetsu;
Hairetsu2[0] = 10;
System.out.println ( Hairetsu[0] );

上記の場合、「1」と表示されそうなものですが、実際は「10」と表示されます。これは、配列変数と配列の要素が別個のものだからです。
配列変数は要素を参照しているだけなので、Hairetsu2 = Hairetsuとすると、同じ要素を参照していることになります。
したがって、Hairetsu2から参照している要素の値を変更したら、Hairetsuから参照している要素の値も変更されていることになります。
結果として、「10」と表示されるのです。

このように配列変数と配列の要素が別個のものであると一つ問題が起こります。
それは、配列変数自体が削除されても、配列の要素が残ったままになってしまい、メモリ上にゴミとして残ってしまうということです。

ガーベージコレクション

これを解決しているのがガーベージコレクションというJAVAの仕組みです。
ガーベージコレクションは、このように配列変数から参照されなくなった「ゴミ」としての配列の要素を自動的に削除します。

意図的に配列変数と配列の要素を削除する

上記のように配列変数が使えなくなると、配列の要素は削除されます。
これを利用して、以下のようにすると、意図的に配列の要素を削除できます。

int[] Hairetsu = { 1, 2, 3, 4, 5 };
Hairetsu = null;

nullとは「何もない」という値です。null値といいます。
配列変数の参照をnull値にすると、何も参照していないことになります。
その結果、使われていない配列変数となります。

一度null値を代入するとその配列変数は使えなくなるので、再び使いたい場合には再度宣言をしなければなりません。

関連記事

JAVAのローカル変数とグローバル変数

変数には、その有効範囲が定められています。 この有効範囲のことをスコープと言います。 スコープ内では変数を利用できますが、スコープ外ではその変数は存在しないことになり、利用することができません。 ロー…続きを読む

JAVAのループ処理:for文

JAVAにおけるループ処理の一つとして、while文のほかに、for文というのがあります。 これはある条件を満たしている場合は決められた処理を繰り返すというところまではwhile文と一緒ですが、条件を…続きを読む

JAVAの条件分岐:if文

条件分岐とは、ある条件を提示して、その条件に合致していたらA、合致していなければBを実行する、という構文で、プログラミングには欠かせないものです。 条件分岐には以下の種類があります。 if文 swit…続きを読む

JAVAのメソッド:println()

→関連ページ(Eclipseを使ってJAVAで”Hello World”を表示する) →関連ページ(JAVAのメソッドとは) ここからは「Hello World」を表示させたメ…続きを読む

JAVAの条件分岐:switch文

if文と並ぶ条件分岐の構文として、もう一つ、switch文があります。 if文が条件が真偽で処理を変える2択(elseifを付ければ複数の選択肢を持たすことができるが)であるのに対し、switch文は…続きを読む

JAVAでクラスを生成する

JAVAでは、一つのソースファイル(.javaファイル)ごとに最低でも1つのpublicクラスが必要になります。 publicクラスは、1つのソースファイルに1つしか設定できません。 publicでな…続きを読む

WindowsにJAVA実行環境「Pleiades」をインストールする

プログラミングを学習するためにJAVAでアプリケーションをつくることにしました。手始めに、Windows 10にJAVAの実行環境をつくります。 Windows 10にJAVAの開発環境をつくる JA…続きを読む

JAVAで変数を使う:変数宣言と変数の型

変数とは、プログラム内で利用される「値」を入れるための「器」です。 変数は一定の規則に従えば、任意の名前を付けることができます。 変数はどのように使うのかというと、例えば、Hensuという名前を変数を…続きを読む

JAVAでメソッドをつくる

JAVAには既に存在するメソッドのほかに、自分でメソッドを作ることができます。 自分でメソッドを作る際のルールは以下の通りです。 修飾子 戻り値の型 メソッド名(引数) { 処理 } 修飾子とは 修飾…続きを読む

JAVAのオペランドと演算子

変数に代入する書式は、通常の計算式のように書きます。 a = b + c; このように書けば、変数aにbとcを加算した結果の値が代入されます。 この、=や+を演算子、それ以外の変数などの値を非演算子(…続きを読む