Java の Integer と int の違いは何ですか? 質問する

Java の Integer と int の違いは何ですか? 質問する

たとえば、なぜ次のようなことができるのでしょうか。

int n = 9;

だがしかし:

Integer n = 9;

そして、次のことができます:

Integer.parseInt("1");

だがしかし:

int.parseInt("1");

ベストアンサー1

intはプリミティブ型です。 型の変数には、int表現したい整数の実際のバイナリ値が格納されます。 はクラスではなく、メソッドもないint.parseInt("1")ため、意味がありません。int

Integerはクラスであり、Java 言語の他のクラスと何ら変わりありません。 型の変数は、他の参照 (オブジェクト) 型と同様に、オブジェクトへの参照をInteger格納します。 は、クラスからの静的メソッドの呼び出しです(このメソッドは実際には を返すのであって を返すのではないことに注意してください)。IntegerInteger.parseInt("1")parseIntIntegerintInteger

より具体的に言うと、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 以降ではオートボクシングが導入され、プリミティブ クラスとラッパー クラス間の変換は自動的に行われます。ただし、これによって微妙なバグやパフォーマンスの問題が発生する可能性があるので注意してください。変換について明示的に記述しても問題はありません。

おすすめ記事