たとえば、なぜ次のようなことができるのでしょうか。
int n = 9;
だがしかし:
Integer n = 9;
そして、次のことができます:
Integer.parseInt("1");
だがしかし:
int.parseInt("1");
ベストアンサー1
int
はプリミティブ型です。 型の変数には、int
表現したい整数の実際のバイナリ値が格納されます。 はクラスではなく、メソッドもないint.parseInt("1")
ため、意味がありません。int
Integer
はクラスであり、Java 言語の他のクラスと何ら変わりありません。 型の変数は、他の参照 (オブジェクト) 型と同様に、オブジェクトへの参照をInteger
格納します。 は、クラスからの静的メソッドの呼び出しです(このメソッドは実際には を返すのであって を返すのではないことに注意してください)。Integer
Integer.parseInt("1")
parseInt
Integer
int
Integer
より具体的に言うと、Integer
は 型の単一のフィールドを持つクラスですint
。このクラスは、int
ジェネリック型や null 値を許可する必要のある状況など、 を他のオブジェクトと同じように扱う必要がある場合に使用されます。
Java のすべてのプリミティブ型には同等のラッパークラスがあることに注意してください。
byte
もっているByte
short
もっているShort
int
もっているInteger
long
もっているLong
boolean
もっているBoolean
char
もっているCharacter
float
もっているFloat
double
もっているDouble
ラッパー クラスは Object クラスから継承しますが、プリミティブは継承しません。そのため、Object 参照またはジェネリックを含むコレクションで使用できます。
Java 5 以降ではオートボクシングが導入され、プリミティブ クラスとラッパー クラス間の変換は自動的に行われます。ただし、これによって微妙なバグやパフォーマンスの問題が発生する可能性があるので注意してください。変換について明示的に記述しても問題はありません。