1 次元配列,初期設定,及び,メソッド

01	/****************************/
02	/* 配列と初期化             */
03	/*      coded by Y.Suganuma */
04	/****************************/
05	import java.io.*;
06	
07	public class Test {
08		public static void main(String args[])
09		{
10		/*
11		     初期設定された値と確保された領域のサイズ
12		*/
13			int x2[] = {1, 2, 3, 4, 5, 6};                // 6つのデータ領域
14			String c1 = "test data";                      // 文字列
15			String c2[] = {"test1 data", "test2 data"};   // 2つの文字列
16			for (int i1 = 0; i1 < x2.length; i1++)
17				System.out.print(x2[i1] + " ");
18			System.out.print("(" + 4*x2.length + "バイト)\n");
19			System.out.println(c1 + "(" + c1.length() + "バイト)");
20			for (int i1 = 0; i1 < c2.length; i1++)
21				System.out.println(c2[i1] + "(" + c2[i1].length() + "バイト)");
22		/*
23		     要素の参照と変更
24		*/
25			int x1[];   // 配列オブジェクトであることの宣言
26			x1    = x2;   // x2 のアドレスを代入
27			x1[1] = -1;
28			x2[3] = -3;
29			for (int i1 = 0; i1 < x2.length; i1++)
30				System.out.print(x2[i1] + " ");
31			System.out.print("\n");
32			c1 = "test0 data";   // 文字列のアドレスを代入
33			System.out.println(c1 + "(" + c1.length() + "バイト)");
34			c2[0] = "test100 data";   // 文字列のアドレスを代入
35			for (int i1 = 0; i1 < c2.length; i1++)
36				System.out.println(c2[i1] + "(" + c2[i1].length() + "バイト)");
37		}
38	}
		
13 行目

  new 演算子を使用しなくても,このように,初期設定によって配列のサイズを宣言可能です.

14,15 行目

  Java には String クラスが存在するため,文字列を String クラスで扱う場合が多いと思います.String クラスを利用すると,14 行目のように,文字列を配列と意識しないで使用することが可能です.15 行目のようなデータを扱いたい場合,後に述べるように,C/C++ では 2 次元配列になります.

16 行目

  Java においては,配列は一種のオブジェクトです.length は配列の大きさが入っている変数(フィールド)です.

19 行目

  length() は文字列の長さを返す String クラスの関数(メソッド)です.

26 ~ 28 行目

  プログラム例 6.4 の 32 から 36 行目と比較すると非常に似ているのが分かると思います.Java にはポインタの概念が明示的には存在しないため,C/C++ における x1 = &x[2] のように配列の中間のアドレスを取り出すことや,プログラム例 6.4 の 34 および 36 行目に対応する操作は不可能ですが,25 行目の宣言が,プログラム例 6.4 の 10 行目に相当しているといっても,少なくともこの場合は問題ないように思えます.このように,Java においてもポインタの考え方自身は重要であると思います.32 および 34 行目の代入が可能であることも,c1 および c2[0] がポインタであると思えば納得できます(プログラム例 6.4 の 46,47 行目).

  このプログラムを実行すると,以下のような結果が得られます.
	1 2 3 4 5 6 (24バイト)
	test data(9バイト)
	test1 data(10バイト)
	test2 data(10バイト)
	1 -1 3 -3 5 6 
	test0 data(10バイト)
	test100 data(12バイト)
	test2 data(10バイト)