1. ラッパークラスとプリミティブ型
プリミティブ型 | ラッパークラス |
---|---|
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
ラッパークラス
*特徴*
+ メソッドを持つ
+ nullを代入できる
+ static変数を持つ
ラッパークラスのインスタンス生成(プリミティブ型⇒ラッパークラス)
Integer i = Integer.valueOf(16);
ラッパークラス⇒プリミティブ型変換
int val = i.intValue();
String⇒プリミティブ型変換
int val = Integer.parseInt("1");
ラッパークラス⇒String
String s = i.toString();
プリミティブ型
*特徴*
+ メソッドを持たない
+ nullは代入できない
ラッパークラスにプリミティブ型とラッパークラスの変換メソッドが用意されているが、明示的に変換しなくても、自動で変換がされる。それぞれオートボクシング・アンボクシングという。
自動変換はされるが、プリミティブ型とラッパークラスでnullの場合のあり/なし等異なる点があり、変換に失敗する可能性もあるので、型変換されているということは意識するべき。
オートボクシング:プリミティブ型⇒ラッパークラスの自動変換
アンボクシング:ラッパークラス⇒プリミティブ型の自動変換
== と equals
== :プリミティブ型同士の値の比較に用いる。オブジェクトで使用した場合はオブジェクトの参照先が同じかどうかを検証する(同じオブジェクトでないとfalseを返す)
equals:オブジェクトの参照している値の比較に用いる
public class Main { public static void main(String[] args) { // プリミティブ型の比較 int intA = 1; int intB = 1; System.out.println(intA == intB); String hoge = "Hello"; String fuga = "Hello"; hoge += "!"; fuga += "!"; System.out.println(hoge == fuga); // false System.out.println(hoge.equals(fuga)); // true } }
equals使用時の注意:NullPointerExceptionの対策をしておく
// 確実にnull出ない方でメソッドを呼び出す if("aaa".equals(hoge)){ } // nullチェックをする if(fuga != null && fuga.equals(hoge)){ }