2011-10-09 528 views
9

更確切地說,int是Integer類的一部分(精簡版本還是其他東西),還是完全是其他東西?int是Java中的一個對象嗎?

我知道int是一個值類型和Integer是一個引用類型,但int繼承自Object嗎?

(我假設,在這方面的int,long,布爾等都是類似的。INT只是選擇了方便)

回答

16
  • Java中的基本類型不是對象,也不從Object繼承。

  • 由於Java 1.5引入允許int和Integer(和其他類型)之間的自動裝箱。

  • 由於類型爲int不是不能用作泛型類型參數的對象,例如在Tlist<T>

0

基本類型不是對象,而是直接存儲在任何情況下都需要他們。如果他們需要像一個對象一樣對待,他們可以用一個Integer來裝箱。

+0

所以你說對象=引用類型? – soandos

+0

@soandos:是的。 Java中的所有類實例都是引用類型。 – siride

1

如果你談論整數:

Integer類在對象中包裝基本類型int的值。 Integer類型的對象包含一個類型爲int的單個字段。

此外,這個類提供了幾種將int轉換爲String和String的方法,以及處理int時的其他常量和方法。

int不是對象,它是一個原始類型。

+0

那麼它不會從對象繼承? – soandos

+0

@soandos:它從* nothing *繼承。由於主體不是參考類型,它不能繼承期限。這與C#的簡單類型很相似。 –

+0

在其他語言中,結構體可以繼承,所以它僅僅是一個原始的事實是不夠的 – soandos

16

"Primitive Data Types":「原始類型是語言內置的特殊的數據類型,它們是不是從一個類創建的對象。「反過來說,這意味着no,int不會以任何方式從java.lang.Object繼承,因爲只有「從類創建的對象」才能這樣做。試想一下:

int x = 5; 

爲了名爲x從對象繼承的東西,那個東西就需要有一個類型。請注意,我區分了x本身和它命名的東西。 x有一個類型,它是int,但名爲x的東西是值5,它本身沒有類型。它只是代表整數值「5」的一系列位。相比之下,考慮:

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

在這種情況下,y有型號碼,並命名爲y的事物都具有整數類型。名爲y的東西是一個對象。它有一個獨特的類型,不管y或其他任何東西。

+1

+1爲煩擾尋找引用 – mikek3332002

+0

我有一個疑問 - 一個方法,其返回類型是一個「對象」,實際上返回「int」?如果是的話,那麼我怎麼能從調用環境中的'Object'返回'int'? –

+0

@KaranChadha你應該發佈這個作爲一個新的問題,而不是一個評論。儘管如此,一定要檢查一下,看看之前是否有同樣的問題。 –

相關問題