スポンサーサイト





上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

オブジェクト型の配列





配列にはint型などのJavaの文法上もともとある基本型のほかに、自由に定義できるオブジェクト型(クラス型)もあります。

オブジェクト型の配列は非常に応用範囲が広くて便利なのですが、なぜか触れられることがあまり多くないようです。

今回は、このオブジェクト型の配列の基本を押さえることにします。


たとえば、3人の生徒がいます。

出席番号名前
1太郎
2次郎
3三郎


出席番号は数値(int型)、名前は文字列(String型)で、通常、データ型が違うので同じ配列の値として扱うことはできません。

そこで、出席番号をnum、名前をnameという配列に格納して出力してみます。

package kihon;

class Sample
{
public static void main(String args[])
{
int num[]=new int[3];
num[0]=1;
num[1]=2;
num[2]=3;

String name[]=new String[3];
name[0]="太郎";
name[1]="次郎";
name[2]="三郎";

for(int i=0;i<3;i++){
System.out.println("出席番号 "+num[i]+", 名前 "+name[i]);
}
}
}


実行結果 :

出席番号 1, 名前 太郎
出席番号 2, 名前 次郎
出席番号 3, 名前 三郎



ところで、この出席番号と名前をまとめて一つの配列で扱えたら便利そうだと思いませんか?

出席番号と名前だけのデータなら別々の配列としても苦にはならないでしょうが、ニックネーム、テストの点数など項目が増えてくると別々の配列として管理するのは大変です。

そこで、Student型の配列というのを新たに定義してそれぞれの生徒のデータを扱うことにしてみましょう。

package kihon;

class Sample
{
public static void main(String args[])
{
Student student[]=new Student[3];
student[0]=new Student(1,"太郎");
student[1]=new Student(2,"次郎");
student[2]=new Student(3,"三郎");

for(int i=0;i<3;i++){
System.out.println("出席番号 "+student[i].num+", 名前 "+student[i].name);
}
}
}

class Student{
int num;
String name;

Student(int num,String name){
this.num=num;
this.name=name;
}
}


Student型の配列を定義するためには、Studentクラスを作成します。

Studentクラスでは、int型の変数num、String型の変数nameを定義し、コンストラクタでインスタンスを作成できるようにします。

メインメソッドでは、Student型の配列student[]を3つ用意します。その用意した配列に、出席番号と名前のデータを格納します。

注意が必要なのは、new演算子が何度も出てきていますね。基本型の配列では、new演算子が出現するのは配列を宣言するときだけでした。

Student student[]=new Student[3];

の部分は、要素を3つもつ配列student[]を作るためのnewです。

これに対して、

student[0]=new Student(1,"太郎");

以下の部分は、Studentオブジェクトを作成するためのnewです(なお、Eclipseでnew演算子を使わずに配列各要素のインスタンスを作成しようとすると「配列定数はイニシャライザーにおいてのみ使用可能です。」という不親切なエラーメッセージが出てきます)。

つまり、オブジェクト型の配列を生成するには、配列を生成して、さらに配列の各要素のオブジェクトを生成しなければならないのです。

たとえて言うと、今度太郎、次郎、三郎の3人の生徒が入ることになりました。そこで3人を迎い入れる準備をしなければならないのですが、そのためには(Javaの文法上は)、3人のための机やいすを用意(配列の生成)するだけでは足りず、各人の出席番号と名前の書いた札を貼りつけ(配列各要素のオブジェクト生成)なければならないのです。

for文で出力処理するときは、ひとつの配列要素に複数のデータがありますので、

System.out.println(student[i]);

とすることはできません。

必ず、numやnameといったフィールド名をドット . をつけて指定しなければなりません。



なお、String型の配列は実はオブジェクト型の配列です。しかし、文字列処理はあまりに通常に行われるため、JavaではString型はほぼ基本型と同様の、特権的な(?)扱いがなされています。

関連記事

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://javamania.blog25.fc2.com/tb.php/100-dfac1665
  • 閉じるボタン
クラスライブラリ解説 目次
クラスライブラリとは
 ├ Java APIの調べ方
 ├ Objectクラスを調べる
 ├ ライブラリのインポート
 ├ 完全修飾クラス名を調べる
 ├ staticインポート
 ├ 外部ライブラリの利用

文字列を扱う
 ├ Stringとイミュータプル
 ├ StringBuilder 文字列の連結
 ├ toString()のオーバーライド
 ├ toXxCase() 大文字と小文字
 ├ compareTo() 値の比較
 ├ parseDouble() 文字を小数値に
 └ 文字列を抜き出す
 ├ char配列からString型へ変換
 ├ 空白文字の除去

日付を扱う
 ├ Calendar 現在の日付
 ├ Date 日付の表示

数値演算を扱う
 ├ round() 切上・切捨・四捨五入
 ├ BigDecimal
 ├ sqrt(),pow() 累乗と平方根
 ├ BigInteger
 ├ int型の最大値・最小値
 ├ random() 乱数作成

ファイルを扱う
 ├ ファイルの存在確認
 ├ ファイルを作成
 ├ ファイルの削除
 ├ ファイルサイズを調べる

入出力ストリーム
 ├ ファイルを読み込む
 ├ 画像ファイルのコピー
 ├ 日本語の読み込みと書き出し
 ├ バッファ入出力
 ├ データ型フリーの出力ストリーム
 ├ getBytes()メソッド

書式つき入出力
 ├ 書式を指定して出力
 ├ 引数インデックス
 ├ 整数値のフォーマット
 ├ 小数値のフォーマット
 ├ 九九の表のフォーマット

例外処理
 ├ printStackTrace()
 ├ NullPointerException
 └ NumberFormatException
月別アーカイブ
カテゴリ
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。