1. ホーム

[解決済み】JavaのIntegerとintの違いは何ですか?

2022-04-15 02:24:04

質問

例えば、なぜできるのか。

int n = 9;

しかし、そうではありません。

Integer n = 9;

そして、できるようになる。

Integer.parseInt("1");

しかし、そうではありません。

int.parseInt("1");

解決方法は?

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

Integer はクラスであり、Java言語の他のクラスと何ら変わりはありません。型の変数は Integer 店舗 リファレンス から Integer オブジェクトを、他の参照(オブジェクト)型と同じように使用することができます。 Integer.parseInt("1") はスタティックメソッドの呼び出しです。 parseInt クラスから Integer (このメソッドが実際に返すのは int であって Integer ).

より具体的に言うと Integer という型のフィールドを1つ持つクラスです。 int . このクラスは int を他のオブジェクトと同じように扱うことができます。

なお、Javaのすべてのプリミティブ型には、同じように ラッパー クラスがあります。

  • byte があります。 Byte
  • short があります。 Short
  • int があります。 Integer
  • long があります。 Long
  • boolean があります。 Boolean
  • char があります。 Character
  • float があります。 Float
  • double があります。 Double

ラッパークラスはObjectクラスを継承し、プリミティブクラスは継承しません。そのため、オブジェクトを参照するコレクションやジェネリックで使用することができます。

java5からはオートボックスが導入され、プリミティブとラッパークラスの変換は自動的に行われるようになりました。 しかし、これは微妙なバグやパフォーマンスの問題を引き起こす可能性があるため、注意が必要です。