え~
しばらくすっかり忘れてた( ^ω^)・・・
newを使って配列を作る
まずは、配列を作る一般的な書き方です。
ここでは int[]型を例にして示すと次のようになります。
右辺では new演算子と作成する要素数の指定に注意してください。
そしてこのような式から作成される配列のイメージは次のようになります。
配列のオブジェクトはヒーブメモリに作成され、同時に作られる参照が配列変数numberに代入されるわけです。
配列オブジェクトはいくつでも作成ができるので、変数に出して使う必要があります。
作成と同時に配列要素が初期化される
次にもう一つ図を見てみます。
配列の要素の並びとして扱ったものは上の図で見ると1つのオブジェクトだったということが分かります。
あと、オブジェクトの中にlengthという変数があります。
lengthは配列の要素数を表す値で、配列オブジェクトが持っている定数です。
配列作成時に要素数をカウントし、値が書き込まれます。
値は書き換えることができません。
また、配列の要素の値はどれも0です。
これはオブジェクトを作成した直後、自動的に既定の初期値で初期化されるからです。
配列の作り方と使い方
では、実際に作ってみますかwww
package exercise;
import java.util.Arrays;
import lib.Input;
public class Sample_sample {
public static void main(String[] args) {
double[]data = new double[3];
for(int i=0; i<data.length; i++) {
data[i]=Input.getDouble("値");
}
String list = Arrays.toString(data);
System.out.println(list);
}
// ここにコードを挿入
}
Ecripsで起動するとこのようになります
上のプログラムをもう一度見てみます
package exercise;
import java.util.Arrays;
import lib.Input;
public class Sample_sample {
public static void main(String[] args) {
double[]data = new double[3];
for(int i=0; i<data.length; i++) {
data[i]=Input.getDouble("値");
}
String list = Arrays.toString(data);
System.out.println(list);
}
// ここにコードを挿入
}
dubleの配列を作ってみましたが問題なく起動します。
int[]以外の配列の作り方も同じです。
POINT ・・・ Arrays.toString(配列変数名)
配列要素のリストを文字列にして返す
Arrays.toStringは、java.utilパッケージにあるArraysクラスのstaticメソッド(クラスメソッド)です。
inputクラスと同様に使うためにはプログラムの先頭にはインポート文が必要です。
ただ・・・Ecripsの場合ほとんど自動挿入されるので入力することはほとんどないと思います・・・
次に無名配列について説明を
無名配列(初期化リストあり)
配列を作るもう一つのパターンとして無名配列があります。
配列の要素のリストを指定して作成する方法です。
これまで使ってきたものより一般的な書き方です。
どう違うのかというところから見ていきましょう。
int[] number =[1,2,3,4,5,6,7,8,9,]; <-----------------これまでの書き方
int[] number = new int[1,2,3,4,5,6,7,8,9,]; <------新しい書き方 (無名配列)
では、実際に無名配列を使ってみましょうかね。
package exercise;
import java.util.Arrays;
public class Sample_sample2 {
public static void main(String[] args) {
int[] Box;
Box = new int[] {1,2,3,4,5,6,7,8,9};
System.out.println(Arrays.toString(Box));
}
}
こんな感じです。
numberノ所をBoxに変えておきます。
Ecripsで起動するとこんな感じになります。
そして、無名配列では要素数を指定しません。
要素数は指定した初期化リストから自動的に設定されます。
オブジェクトの配列
オブジェクトをまとめて扱うときは、ArrayList(Javaパッケージ)のような便利なデータ構造を利用しますが、それでも配列の存在価値がないわけではない。
まずは、Diceオブジェクトの配列についてみていきます。
Diceオブジェクトの配列
作り方、使い方は一般の配列と同じです。
っといっても実際やってみないと分かりにくいと思いますねwww
一応方法としては以下の3つ
1.初期化リストで作成
Dice[] dices = {new Dice(),new Dice(),new Dice()};
2.無名配列で作成
Dice[] dices
dices = new Dice[] {new Dice(),new Dice(),new Dice()};
3.配列を作った後で、配列要素にオブジェクト代入
DIce[]dices=new Dice[3];
では試しにDiceオブジェクトの配列を
Diceオブジェクトの配列
package exercise;
public class Sample_sample3 {
public static void main(String[] args) {
Dice[] dices = {new Dice(),new Dice(),new Dice()};
for(Dice dice : dices){
System.out.print(dice.getVal()+"/"+ dice.getColor()+"\t");// ここにコードを挿入
}
}
}
プログラムはこのようになります。
起動してみると・・・・
この様に表示されます。
今回最後に捕捉を・・・
Diceオブジェクトの配列をArrays.toStringで出力する
基本データ型の配列なら、配列要素はIntやdoubleの値。
よってArrays.toStringが適切 な値で出力が可能です。
しかし、中身がそれぞれ違うオブジェクトではそれができない(´;ω;`)
そこで、Arrays.toStringでは各オブジェクトのtoStringメソッドを呼び出してその戻り値を表示に使います。
配列要素ごとにtoStringメソッドを呼び出して表示すべき文字列を取得し、それをそのまま出力します。
なので、DIceクラスでtoStringメソッドを作成すればArrays.toStringでの出力が可能です。
public String toString(){
return val + "/"+color;
}
ここまでご覧いただきありがとうございました。
BYマんタ
参考書は__________________________________
川場 隆 Kawaba Takashi
秀和システム