Array

オブジェクト指向Javaプログラミング入門
第4章
配 列
近代科学社©2008 Toru Kato
Masahiro Higuchi
Shiro Takata
配列
関連する複数のデータを、一つの名前で統一
的に扱うためのオブジェクト
 個々のデータをそれぞれ別の変数に代入して
扱うような煩雑さを避けることができる
 個々の要素は、配列名(配列変数名)とその後
に続くindex(添字)を用いて処理できる
[0]
[1]
[2]
[3]
配列名
2
1次元配列を使ったプログラム例
プログラム例4.1.1(P. 95)改
7
8
9
10
11
12
int[] even;
even = new int[4];
even[0] = 0;
even[1] = 2;
even[2] = 4;
even[3] = 6;
配列変数evenの宣言と
配列の生成
[0]
[1]
[2]
[3]
even
13 System.out.print("4番目までの偶数:");
14 for (int i = 0; i < 4; i++) {
15
System.out.printf("%4d", even[i]);
16 }
3
1次元配列を使ったプログラム例
プログラム例4.1.1(P. 95)改
7
8
9
10
11
12
int[] even;
even = new int[4];
even[0] = 0;
even[1] = 2;
even[2] = 4;
even[3] = 6;
配列evenへ、データを格納
[0]
[1]
[2]
[3]
even 0
13 System.out.print("4番目までの偶数:");
14 for (int i = 0; i < 4; i++) {
15
System.out.printf("%4d", even[i]);
16 }
4
1次元配列を使ったプログラム例
プログラム例4.1.1(P. 95)改
7
8
9
10
11
12
int[] even;
even = new int[4];
even[0] = 0;
even[1] = 2;
even[2] = 4;
even[3] = 6;
配列evenへ、データを格納
[0]
even 0
[1]
[2]
[3]
2
13 System.out.print("4番目までの偶数:");
14 for (int i = 0; i < 4; i++) {
15
System.out.printf("%4d", even[i]);
16 }
5
1次元配列を使ったプログラム例
プログラム例4.1.1(P. 95)改
7
8
9
10
11
12
int[] even;
even = new int[4];
even[0] = 0;
even[1] = 2;
even[2] = 4;
even[3] = 6;
配列evenへ、データを格納
[0]
even 0
[1]
[2]
2
4
[3]
13 System.out.print("4番目までの偶数:");
14 for (int i = 0; i < 4; i++) {
15
System.out.printf("%4d", even[i]);
16 }
6
1次元配列を使ったプログラム例
プログラム例4.1.1(P. 95)改
7
8
9
10
11
12
int[] even;
even = new int[4];
even[0] = 0;
even[1] = 2;
even[2] = 4;
even[3] = 6;
配列evenへ、データを格納
[0]
even 0
[1]
[2]
[3]
2
4
6
13 System.out.print("4番目までの偶数:");
14 for (int i = 0; i < 4; i++) {
15
System.out.printf("%4d", even[i]);
16 }
7
1次元配列を使ったプログラム例
プログラム例4.1.1(P. 95)改
7
8
9
10
11
12
int[] even;
even = new int[4];
even[0] = 0;
even[1] = 2;
even[2] = 4;
even[3] = 6;
配列を用いてデータをまとめ
てしまえば、配列名を用いて
それらのデータに対する処
理が簡潔に記述できる
[0]
even 0
[1]
[2]
[3]
2
4
6
13 System.out.print("4番目までの偶数:");
14 for (int i = 0; i < 4; i++) {
15
System.out.printf("%4d", even[i]);
16 }
8
1次元配列を使ったプログラム例
プログラム例4.1.1(P. 95)改
7
8
9
10
11
12
int[] even;
even = new int[4];
even[0] = 0;
even[1] = 2;
even[2] = 4;
even[3] = 6;
配列の大きさを利用すると
きには、lengthを使うべき
[0]
even 0
[1]
[2]
[3]
2
4
6
13 System.out.print(even.length + "番目までの偶数:");
14 for (int i = 0; i < even.length; i++) {
15
System.out.printf("%4d", even[i]);
16 }
9
2次元配列(3行4列)aに整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
[1][0] [1][1] [1][2] [1][3]
配列 a
[2][0] [2][1] [2][2] [2][3]
10
2次元配列(3行4列) a に整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
0
0
0
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
[1][0] [1][1] [1][2] [1][3]
配列 a
[2][0] [2][1] [2][2] [2][3]
11
2次元配列(3行4列) a に整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
0
1
1
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
1
[1][0] [1][1] [1][2] [1][3]
配列 a
[2][0] [2][1] [2][2] [2][3]
12
2次元配列(3行4列) a に整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
0
2
2
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
1
2
[1][0] [1][1] [1][2] [1][3]
配列 a
[2][0] [2][1] [2][2] [2][3]
13
2次元配列(3行4列) a に整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
0
2
3
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
1
2
3
[1][0] [1][1] [1][2] [1][3]
配列 a
[2][0] [2][1] [2][2] [2][3]
14
2次元配列(3行4列) a に整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
1
0
1
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
1
2
3
[1][0] [1][1] [1][2] [1][3]
配列 a
1
[2][0] [2][1] [2][2] [2][3]
15
2次元配列(3行4列) a に整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
1
1
2
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
1
2
3
[1][0] [1][1] [1][2] [1][3]
配列 a
1
2
[2][0] [2][1] [2][2] [2][3]
16
2次元配列(3行4列) a に整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
1
2
3
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
1
2
3
[1][0] [1][1] [1][2] [1][3]
配列 a
1
2
3
[2][0] [2][1] [2][2] [2][3]
17
2次元配列(3行4列) a に整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
1
3
4
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
1
2
3
[1][0] [1][1] [1][2] [1][3]
配列 a
1
2
3
4
[2][0] [2][1] [2][2] [2][3]
18
2次元配列(3行4列) a に整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
2
0
2
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
1
2
3
[1][0] [1][1] [1][2] [1][3]
配列 a
1
2
3
4
[2][0] [2][1] [2][2] [2][3]
2
19
2次元配列(3行4列) a に整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
2
1
3
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
1
2
3
[1][0] [1][1] [1][2] [1][3]
配列 a
1
2
3
4
[2][0] [2][1] [2][2] [2][3]
2
3
20
2次元配列(3行4列) a に整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
2
2
4
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
1
2
3
[1][0] [1][1] [1][2] [1][3]
配列 a
1
2
3
4
[2][0] [2][1] [2][2] [2][3]
2
3
4
21
2次元配列(3行4列) a に整数を順次代入する様子
(プログラム例4.3.1(p. 103)の5,6,7行目)
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
2
3
5
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
1
2
3
[1][0] [1][1] [1][2] [1][3]
配列 a
1
2
3
4
[2][0] [2][1] [2][2] [2][3]
2
3
4
5
22
2次元配列の大きさも length で取得できる。length を使うと、
配列の大きさが変わっても他の部分は変更不要
for(int i = 0; i < a.length; i++) {
for(int j = 0; j < a[i].length; j++) {
a[i][j] = i + j;
[0][0] [0][1] [0][2] [0][3]
0
1
2
3
[1][0] [1][1] [1][2] [1][3]
2
3
4
a.length
[2][0] [2][1] [2][2] [2][3]
2
3
4
5
a[i].length (= 4)
(3 )
=
配列 a
1
23