同一クラスのオブジェクトを複数生成してハッシュ値(ハッシュコード)を調べる
※*1字下げが反映されてないorz 今度暇なときにでも直す
public class Duck {
int size;
// コンストラクタ
public Duck (int ducksize) {
size = ducksize;
if (ducksize < 25)
System.out.println("ピヨピヨ");
else
System.out.println("グワオグワオウゥゥ!!");
System.out.println("ducksize = " + ducksize);
}
}
- テストコード
public class DuckSizeTester {
public static void main(String[] args) {
// ducksize = "32"のオブジェクトを生成してハッシュコードを調べてみる
System.out.println(new Duck(32).hashCode() + "\n");
// ducksize = "12"のオブジェクトを生成してハッシュコードを調べてみる
System.out.println(new Duck(12).hashCode() + "\n");
// Duckクラスのsizeに"5"を代入してオブジェクト生成34
Duck d = new Duck(5);
// ハッシュコードを調べてみる
System.out.println(d.hashCode() + "\n");
// 34を代入してみる
d.size = 34;
// 新しいオブジェクト生成
new Duck(d.size);
// ハッシュコードを調べてみる
System.out.println(d.hashCode() + "\n");
System.out.println(new Duck(d.size).hashCode() + "\n");
}
}
- 実行結果
グワオグワオウゥゥ!!
ducksize = 32
22068557ピヨピヨ
ducksize = 12
29115481ピヨピヨ
ducksize = 5
19621457グワオグワオウゥゥ!!
ducksize = 34
19621457グワオグワオウゥゥ!!
ducksize = 34
4872882
おお。
インスタンスが同一状態(全フィールドの値がいっしょ)のときはハッシュ値も同じだ!
*1:自分メモ