ラベル Integer の投稿を表示しています。 すべての投稿を表示
ラベル Integer の投稿を表示しています。 すべての投稿を表示

2015年10月7日水曜日

Java初心者がはまったこと2(ラッパークラス)

こんにちは。Java初心者のWebエンジニアKです。
PHPのノリでJavaを書いていたらはまったこと第二弾として、今回はラッパークラスについて書きたいと思います。

■intとIntegerではまる

Javaのソースコードを見ていると、例えば数値を扱う変数を作るとき、以下の2通りの宣言があることに気付きました。
int num = 100;
Integer num2 = 100;
両者の違いを正しく理解せずに、その日の気分で使い分けていたら見事にはまりました。

■intとIntegerの違い

intはプリミティブ型のひとつで、値(intの場合は特に数値)のみを扱うための型です。 初期値は0です。
一方Integerはラッパークラスと呼ばれる参照型のひとつで、intを値だけでなく「振る舞い」も合わせて扱えるように定義した型となります。
「振る舞い」は平たく言うとクラスメソッド(toStringやvalueOf)のことですね。

また、Integer型は参照型のため値にnullを取ることができ、初期値も0ではなくnullになります。
ここが個人的なはまりポイントでした。
両者の違いをまとめてみると、
  • Integerは値にnullもとれる
  • Integerの初期値はnull、intは0
  • IntegerにはtoStringやvalueOfなどのメソッドが実装されている
javaのラッパークラスはint:Integer以外にもboolean:Booleanなど8種類あります。
両者の違いを理解して、要件にあった使い分けをすることが重要ですね。
参考サイト