プリミティブ(基本データ型変数)をオブジェクトとして扱うためにラッパークラスがあります。
プリミティブ ラッパークラス
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
ラッパークラスのオブジェクト生成の際のコンストラクタ引数はそれぞれのプリミティブ型が使用できます。
Character クラス以外は String 型引数も使用できます。
<オブジェクトの生成>
(例)
・ Double d = new Double(5.0);
・ Double d = Double.valueOf(5.0);
・ Double d = Double.valueOf("5.0");
・ Double d = Double.valueOf("5.0f");
・ Short s = d.shortValue(d);
<プリミティブの抽出>
(例)
・ double value = Double.parseDouble("5.0");
・ double value = Double.parseDouble("5.0d");
<オブジェクトの比較>
オブジェクトの比較は == 演算子や equals メソッドで行います。
equals メソッドは Object クラスで定義されていて、String クラス、ラッパークラスでオーバーライドされています。
Object クラスの equals メソッドと String クラスやラッパークラスの equals メソッドは振る舞いが違います。
Object クラスの equals メソッドは比較する2つのオブジェクトがまったく同じオブジェクトの場合 true を返します。
String クラス、ラッパークラスの equals メソッドは2つのオブジェクトがまったく同じでなくても意味的に等しい場合 true を返します。
<サンプル>
Object o1 = new Object();
Object o2 = new Object();
System.out.println("o1 == o2 : " + (o1 == o2));
System.out.println("o1.equals(o2) : " + o1.equals(o2));
Integer i1 = new Integer(5);
Integer i2 = new Integer(5);
System.out.println("i1 == i2 : " + (i1 == i2));
System.out.println("i1.equals(i2) : " + i1.equals(i2));
<出力結果>
o1 == o2 : false
o1.equals(o2) : false
i1 == i2 : false
i1.equals(i2) : true
0 件のコメント:
コメントを投稿