Javaでは、(1)配列を入れるための変数を宣言する手順と(2)配列の領域を確保し、先程の変数に代入する操作の
2つの手順が必要なことは、先程説明しました。
int raikyaku[]; |
配列を入れるための変数の宣言 |
raikyaku = new int[30] |
配列の領域を確保し、変数に代入 |
Javaではraikyaku[10]のように添え字を大括弧で表現しますが、フローチャート
ではraikyaku(10)のように普通の括弧で表現します。
また、Javaでは配列を作るとその中身はきれいにしてくれます。例えば、int型の配列を作成した
直後はその配列要素すべて0になっていますし、double型の配列を作成した場合も、その要素は
0.0で初期化されています。
import java.io.*;
class Test{
public static void main(String args[]){
int a[];
a = new int [10];
System.out.println(a[2]);
}
}
|
C:\java>javac Test.java
C:\java>java Test
0
C:\java>
|
Javaでは、配列を使用する場合に配列の最後を越えてアクセスしていないかどうかをチェックしています。
つまり10個の要素しかない配列の11番目にアクセスすることはできません。(これを例外をスローすると言います。
例外については後述します)
import java.io.*;
class Test{
public static void main(String args[]){
int a[];
a = new int [10];
// 要素数が10の配列の11番目にアクセスしようとした
// 添え字が0から始まるので、11番目は10になる
System.out.println(a[10]);
}
}
|
C:\java>javac Test.java ←コンパイル正常に行われる
C:\java>java Test
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at Test.main(Test.java:9) ←実行時にエラーが出る
C:\java>
|
配列の領域を確保するのと同時に、初期化を行うこともできます。
int raikyaku[] = { 1,2,3,4,5 }; |
この場合、配列の大きさは、初期化の際の要素数になります。つまり上記の例では要素数が5つの配列になります。
実際の配列領域を入れるための変数があると言うことは、配列領域を別の変数に代入することもできます。
import java.io.*;
class Test{
public static void main(String args[]){
int a[] = { 1,2,3,4,5 };
int b[];
b = a;
System.out.println(b[3]);
a[3] = 100;
System.out.println(b[3]);
}
}
|
C:\java>javac Test.java
C:\java>java Test
4
100
C:\java>
|
上の例では、要素数5つの配列をaという変数とbという変数の2つで保持しています。言い換えると、
aとbは同じ配列領域を指していることになります。したがって、aの配列を書き換えると、bも同じ配列を
指しているので、b[3]も100になるわけです。
Javaでは変数を用いて配列の領域確保を行うことができます。すなわち動的に配列のサイズを変化させる
ことができるのです。
import java.io.*;
class Test{
public static void main(String args[]){
int i = 200;
int a[] = new int[i];
}
}
|