【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷




―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



ホワイトペーパーTechTargetジャパン

Java Solution フォーラム 新着記事

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

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?