Java基礎ーラッパークラスとプリミティブ型

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)){
}