2011-10-09 4 views
9

もっと正確に言えば、intはIntegerクラスの一部です(削除されたバージョンなど)、それとも完全に他のものですか?intはJavaのオブジェクトですか?

int型は値型で、Integer型は参照型ですが、Objectから継承しています。

答えて

16
  • Javaの基本タイプはオブジェクトではなく、オブジェクトから継承しません。

  • Java 1.5では、int型とInteger型(およびその他の型)の間でオートボックスが可能になりました。

  • int型は、ジェネリック型パラメータとして使用することはできませんオブジェクトは、例えばされていないのでT"Primitive Data Types"から

0

プリミティブ型はオブジェクトではありません(私はこの点についてのint、long、boolean型などのそれを想定していますが、すべて同様の。intがちょうど便宜のために選ばれたされている)が、彼らが必要とされているどんな文脈に直接格納されています。オブジェクトのように扱う必要がある場合は、Integerで囲むことができます。

Integerクラスは、オブジェクト内のプリミティブ型intの値をラップ:あなたが整数の話なら

+0

だから、オブジェクト=参照型ですか? – soandos

+0

@soandos:はい。 Javaのすべてのクラスインスタンスは参照型です。 – siride

1

。 Integer型のオブジェクトには、型がintの単一のフィールドが含まれます。

さらに、このクラスは、intをStringおよびintに変換するいくつかのメソッド、およびintを扱うときに役立つ他の定数およびメソッドを提供します。

intはオブジェクトではなく、そのプリミティブ型です。

+0

オブジェクトから継承しないのですか? – soandos

+0

@soandos:* nothing *から継承します。 primativesは参照型ではないため、期間を継承することはできません。これはC#の単純な型に似ています。 –

+0

他の言語では、構造体は継承できるので、プリミティブが足りないという事実だけです。 – soandos

16

list<T>に:「プリミティブ型は、言語に組み込まれている特別なデータ型を示し、それらがクラスから作成されたオブジェクトではありません。つまり、いいえ、intはjava.lang.Objectから継承しません。つまり、「クラスから作成されたオブジェクト」だけがそれを行うためです。考えてみましょう:ために

int x = 5; 

をObjectから継承するxをという名前のもののために、そのことは、型を持っている必要があります。私はxとその名前の区別をしています。 xのタイプはintですが、xという名前のものは値5であり、それ自体は型がありません。これは、積分値「5」を表す一連のビットにすぎません。これとは対照的に、考えてみます。この場合、

java.lang.Number y = new java.lang.Integer(5); 

を、yは、型Numberを持っており、yという名前の事はInteger型を持っています。 yという名前のものがオブジェクトです。それはyまたはそれ以外のものとは関係のない明確なタイプです。

+1

+1を参照して迷惑をかけます。 – mikek3332002

+0

疑問があります。戻り値の型が 'Object'で、メソッドが実際に' int'を返すことができますか?はいの場合、呼び出し環境で 'Object'から' int'をどのように取得できますか? –

+0

@ KaranChadhaコメントの代わりに新しい質問として投稿する必要があります。しかし、同じ質問がすでに以前に尋ねられているかどうかを確認することを忘れないでください。 –

関連する問題