―Javaプログラミングの前提知識―

@ITハイブックス編
2003/2/27
Javaプログラミング
ワンポイントレクチャーについて

   配列の宣言方法(1)  ― 宣言の基本 ―

   ワンポイントQuestion

 Javaでの配列宣言として正しいものを選んでください。(複数選択)

A int data[5];
B int data=new int[5];
C int data[] = {1,2,3,4,5};
D int data[][];
E int [] data = new int[3];
F String str[] = "あいうえお"


   配列の宣言方法

 配列とは、集合型データを扱うことができるデータ型の1つで、その特徴は以下のようになります。

  • 1つの配列では1つのデータ型しか扱うことができません。
  • 宣言されて大きさが決まった配列はサイズを変更することができません。

 配列は以下の手順で作成、使用します。

(1)配列を宣言
 代入する値の型で配列を宣言します。宣言方法は以下の2通りあります。

データ型名 配列名[]; または データ型名[] 配列名;

例) int num[]; または int[] num;

(2)配列の領域確保
 配列の領域をメモリ上に確保します。使用するnewはJava言語の予約語です。

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

例) num = new int[4];

 領域が確保された配列に値を代入する場合は、添字を指定して配列の何番目に値を代入す るか指定します。添字は0から始まります。

例) num[0] = 10; (配列numの先頭要素に10を代入)


配列の様子

 上述の手順で配列を使用することが可能ですが、「宣言と領域確保」と「宣言と領域確保と値の代入」を同時に行うこともできます。

■「宣言と領域確保」を同時に行う場合

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

例) int num[] = new int[4];

■「宣言と領域確保と初期化」を同時に行う場合

データ型名 配列名[] = {値1, 値2, 値3, 値4 …};

例) int num[] = {10,8,10,9};

 main()メソッドの引数の型は、String型の配列です。javaコマンドのコマンドラインから渡される引数を処理するコードは、例えば以下のようになります。

main()メソッドの引数処理
public static void main(String args[]) {
  for(int i = 0 ; i < args.length ; i++) {
    String str = args[i];
    // 任意の処理
  }
}

 本設問の選択肢Aは配列名の宣言をおこなおうとしている、もしくは宣言と領域確保を同時にしていますが、このコードは間違いです。

 正しくは、

宣言のみの場合  int data[];
宣言と領域確保の場合 int data[] = new int[5];

となります。

 選択肢Bは宣言と領域確保を同時におこなおうとしていますが、配列名dataの後に[]が抜けているため間違いです。正しくは、

int data[] = new int[5];

となります。

 選択肢Dは多次元配列の宣言です。「配列の宣言(2)」を参照してください。選択肢Fは宣言と領域確保と初期化を同時におこなおうとしていますが、代入される初期値が「{}(中カッコ)」で囲まれていないため間違いです。正しくは、

String str[] = {"あいうえお"};

となります。

POINT

●配列も参照データ型の1つです。
●参照データ型も配列にすることができます。
●集合型データを扱えるものとして、ほかにjava.util.Vectorクラス等があります。Vectorクラスの特徴は、1つのVectorオブジェクトで複数のデータ型を扱うことができ(ただし参照データ型のみ)、後からサイズの変更もすることができます。

●配列名.lengthとして配列の大きさを調べることができます。

例)

int num[] = new int[5];
System.out.println(num.length);
とすると、5が表示されます。

●確保した領域の外をアクセスした場合、例外が発生します。

例)

int num[] = new int[5];
num[6] = 10; ← ここで例外が発生します

●配列の領域確保時に負の値を指定してしまうと例外が発生します。

例)

例)int num[] = new int[-1]; ← ここで例外が発生します


KEYWORD

■java.utilパッケージ
POINTで紹介したVectorクラス等、ユーティリティ的に使用できるクラスライブラリのパッケージです。

 

   ワンポイントQuestionの解答

正解   C、D、E

Java2ラーニングブック −310-035 編−

本記事は@ITハイブックスシリーズ「Java2ラーニングブック −310-035 編−」(技術評論社)から、一部の内容を編集し転載したものです。本書の詳細は「@ITハイブックス」サイトでご覧いただけます。

 

Javaプログラミング・ワンポイントレクチャー INDEX





Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間