Edited at

【メモ】ラッパークラスとプリミティブ型

More than 3 years have passed since last update.

ラッパーとプリミティブ

プリミティブ型というのは

・int/long

・byte/short

・char

・float/double

・boolean

のデータ型のことで

ラッパークラスというのは

・Integer/Long

・Byte/Short

・Character

・Float/Double

・Boolean

と言ったクラスのこと

これは上のリストと対応関係にある

そしてコレクションやジェネリクスを使う際にラッパークラスを知っておくというのは大切なことでもある

ちなみに数値型をラッパーに変換することをボクシング変換

特に自動で行われる変換のうち

プリミティブ型からラッパーに変換することをオートボクシング変換

その逆をオートアンボクシング変換なんて言ったりする


int x = 100;
Integer x = new Integer(100);

例えば上のコードの変数宣言はint/Integerのどちらを使っても結果として同じになる

ただループ内でラッパークラスで宣言した変数を使うのはやめたほうがいい

例えば


Long x = 0L;//初期化
int count = 0;
while(true){
x+=count;
count++;
if(count == 100000)break;
}

これはfor文で10万回ループするのと同じ事だけど

Longで変数宣言したものを毎回呼び出してるので実質10万個のラッパークラスオブジェクトを生成してることになり

これはかなり効率の悪いコードとなる

なぜ効率が悪くなるかというと

ラッパークラスの変数にプリミティブ型の変数を代入することでさっき説明したボクシング変換が毎回行われるから

なので回数の多いループの時にはプリミティブクラスを使うべきでもある