データ集合を扱うのに便利なJavaの配列と拡張for文:【改訂版】Eclipseではじめるプログラミング(5)(1/3 ページ)
これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipse 3.4とJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります
携帯電話のアドレスは「値の集合」
最近、携帯電話は子供でも使っているほど身近な機器ですが、ご存じの通りその実体は「携帯コンピュータ」です。
Windows Mobile搭載のW-ZERO3や、iPhoneといった一昔前のパソコンよりも高性能な携帯電話もあります。コンピュータだけあって、氏名と電話番号の一覧を表示する「アドレス機能」などが付いているのは当たり前になっています。こういったアドレス機能のように、あるデータを一覧で表示するためのプログラムを作成するには、「値の集合」をプログラムで表現できなければいけません。
Javaでは値の集合を表す1つの方法として「配列」を使うことができます。今回は、この「配列」と前回の「プログラミングの真骨頂! Javaで“反復処理”を覚える」で触れた「拡張for文」について解説します。EclipseでJavaプログラミングを始める準備がまだの方は、連載第1回の「Eclipse 3.4で超簡単Javaプログラミング基礎入門」で準備しておいてください。
配列を使わずにプログラミングできますか?
アドレス機能のプログラムをそのまま作るのはちょっと大変なので、ここでは生年月日の一覧を表示する機能に絞って、プログラムを作ってみましょう。
最初に、これまでの知識を使ってプログラムを作成することを考えてみると、生年月日を保持する変数を宣言し、初期化して、一覧表示するということになります。これまで解説したことを思い出せば、long型の変数を必要な数だけ宣言し、値を画面へ出力するにはSystem.out.printlnを使えばよいことは分かるはずです。
ただし、生年月日は「YYYYMMDD(年を4けた、月を2けた、日にちを2けた)」の書式で表される数値とします。また変数の値が0のときは、「登録されていない」状態であると決めて出力しないようにします。
取りあえず、プログラムを作成して動作させてみましょう。Eclipseを起動し、パースペクティブを[Java]に切り替えておいてください。パースペクティブが[Java]になっていないときは、メニューの[ウィンドウ]→[パースペクティブを開く]→[Java]を指定すれば、切り替えができます。今回は次のような手順で新規にクラスを作成することにします。
- [パッケージ・エクスプローラー]の[Sample]をマウス右ボタンでクリック
- 表示されるポップアップメニューで[新規]→[クラス]を指定
- 表示される[新規Javaクラス]ダイアログで、[名前]に「Sample50」と入力
- 同じ[新規Javaクラス]ダイアログで、[どのメソッド・スタブを作成しますか?]のところにある[public static void main(String[] args)]をチェック
- [終了]ボタンをクリック
出来上がったSample50クラスをリスト1のようにしてください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
リスト1のプログラムを保存して実行すると、生年月日の一覧が画面へ出力されて、下記のようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
一覧表示は一応できましたが、これではアドレス一覧へ登録可能な数だけ変数を宣言しないといけないので大変です。ここで例に出した生年月日のように、どれも同じデータ型で変数を宣言して、同じような処理を適用したいことはよくあります。このような場合に利用できる「データ型」として、Javaには「配列」というものがあります。
集合を表現するデータ構造の1つ「配列」
配列を使うと、「順序付けされた要素の集合」を提供できるようになります。また、簡単に使えるように文法が用意されているので、集合を表現するのに一番気軽に使える「データ構造」です。
配列の宣言の仕方と「配列変数」
配列を使うためには、まず配列を宣言しないといけません。配列を宣言するときには、配列の要素の型を指定します。なお、このように宣言された変数を「配列変数」といいます。次の例では、long型の要素を持つ配列を「bd」という変数名で宣言をしています。データ型longの後に付いている「[ ]」により、変数が配列であることが分かります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ちなみに、次のように宣言をすることもできますが、変数宣言は「型名 変数名;」と単純に覚えた方が間違いがありませんので、筆者は「データ型[ ] 変数名;」の宣言を使っています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
配列の宣言では、配列の型と名前を決めたことにしかならないので、「要素を入れることができる入れ物」を作成しないといけません。これは、連載第2回の「Javaで一から理解するプログラムの変数と演算子」で解説したプリミティブ型とはまったく違うので、注意してください。プリミティブ型では、型と名前を宣言すると同時に入れ物も作成されました。
「new演算子」と「代入演算子」
入れ物を作る命令としては「new演算子」というものがあり、これを使います。「入れ物へ入れることができる要素の数」は、「配列の長さ」として、配列を作成するときに指定します。次の例では、「10個のlong型の要素を持つことができる入れ物」を作成しています。new演算子の評価結果は、「作成された入れ物への参照値」になります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
コラム 「1度決めた“配列の長さ”は変更できない」
配列を作成した後では、配列の長さは変更できません。
このため、普通は必要な長さが分かっている状態で配列を作成します。しかし、必要な長さがどれくらいかはっきりしない場合もあります。その場合は、要素の数をある程度想像して十分大きな配列を用意するか、Javaで用意されている「集合」を表現できる便利なクラスを利用するかのどちらかになります。
後者については、クラスを理解していないと分かりにくいので、ここでは紹介しません。興味のある読者は、java.util.Collectionクラスについて調べてみるとよいでしょう。
作成した入れ物と、配列変数を結び付けるためには、第2回で説明した「代入演算子」を使います。この入れ物を代入できる配列変数は型が一致している必要があります。
次の例では、longの配列(long[])という型で宣言された変数bdへ、「10個のlong型の要素を持つことができる入れ物への参照値」を代入しています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
次ページでは引き続き、配列の使い方について説明し、さらに「拡張for文」についても説明します。
Copyright © ITmedia, Inc. All Rights Reserved.