[英]What is difference between int.class and Integer.TYPE in java?
[英]What is the difference between Integer and int in Java?
例如為什么你可以這樣做:
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")
是對來自Integer
類的靜態方法parseInt
的調用(請注意,該方法實際上返回的是int
而不是Integer
)。
更具體地說, Integer
是一個具有int
類型的單個字段的類。 此類用於需要將int
視為任何其他對象的情況,例如在泛型類型或需要可空性的情況下。
請注意,Java 中的每個原始類型都有一個等效的包裝類:
byte
有Byte
short
Short
int
有Integer
long
有Long
boolean
有Boolean
char
有Character
float
有Float
double
有Double
包裝類繼承自 Object 類,而原始類則沒有。 因此它可以用於具有對象引用或泛型的集合中。
從 java 5 開始,我們有了自動裝箱,原始類和包裝類之間的轉換是自動完成的。 但是,請注意,因為這可能會引入細微的錯誤和性能問題; 明確轉換從來沒有壞處。
Integer 幾乎只是原始類型 int 的包裝器。 它允許您使用 Integer 類的所有功能,讓您的生活更輕松。
如果您不熟悉 Java,那么您應該學會欣賞 Java 文檔。 例如,您想了解的有關Integer 類的任何信息都已詳細記錄。
這直接出自 Integer 類的文檔:
Integer 類將原始類型 int 的值包裝在一個對象中。 Integer 類型的對象包含一個類型為 int 的字段。
int 變量保存一個 32 位有符號整數值。 整數(大寫 I)持有對(類)類型 Integer 或 null 的對象的引用。
Java 會自動在兩者之間進行轉換; 從 Integer 到 int 每當 Integer 對象作為 int 運算符的參數出現或分配給 int 變量時,或將 int 值分配給 Integer 變量時。 這種鑄造稱為裝箱/拆箱。
如果引用 null 的 Integer 變量被顯式或隱式拆箱,則會引發 NullPointerException。
(在上面的文本中,術語“變量”是指局部變量、字段或參數)
Integer
是指 Java 中的包裝類型,而int
是原始類型。 Java 中除了原始數據類型之外的所有內容都作為對象實現,這意味着 Java 是一種高度合格的純面向對象編程語言。 如果需要,所有基元類型也可用作 Java 中的包裝器類型。 您可以使用原始類型獲得一些性能優勢,因此僅在必要時才應使用包裝類型。
在您的示例中,如下所示。
Integer n = 9;
常量9
被自動裝箱( auto-boxing
和unboxing
從java 5
開始自動發生)到Integer
,因此您可以使用這樣的語句以及Integer n = new Integer(9)
。 這實際上是通過語句Integer.valueOf(9).intValue();
Integer 是一個包裝類/對象,int 是原始類型。 當您想在集合中存儲 int 值時,這種差異起着巨大的作用,因為它們只接受對象作為值(直到 jdk1.4)。 從 JDK5 開始,由於自動裝箱,它是完全不同的故事。
在 Java 中 int 是一種原始數據類型,而 Integer 是一個 Helper 類,它用於將一種數據類型轉換為另一種數據類型。
例如:
double doubleValue = 156.5d;
Double doubleObject = new Double(doubleValue);
Byte myByteValue = doubleObject.byteValue ();
String myStringValue = doubleObject.toString();
原始數據類型存儲最快的可用內存,其中 Helper 類很復雜並存儲在堆內存中。
參考來自“David Gassner”Java Essential Training。
Java 使用原始類型(也稱為簡單類型),例如int或double來保存語言支持的基本數據類型。 為了性能,原始類型而不是對象用於這些數量。 即使是最簡單的計算,將對象用於這些值也會增加不可接受的開銷。 因此,原始類型不是對象層次結構的一部分,並且它們不繼承 Object 。
盡管原始類型提供了性能優勢,但有時您需要對象表示。 例如,您不能通過對方法的引用來傳遞原始類型。 此外,Java 實現的許多標准數據結構對對象進行操作,這意味着您不能使用這些(特定於對象的)數據結構來存儲原始類型。 為了處理這些(和其他)情況,Java 提供了類型包裝器,它們是將原始類型封裝在對象中的類。
包裝類與 Java 的自動裝箱功能直接相關。 類型包裝器是Double、Float、Long、Integer、Short、Byte、Character 和 Boolean 。 這些類提供了廣泛的方法,允許您將基本類型完全集成到 Java 的對象層次結構中。
int 是原始類型而不是對象。 這意味着沒有與之關聯的方法。 Integer 是一個帶有方法的對象(比如 parseInt)。
使用較新的 java 有自動裝箱(和拆箱)功能。 這意味着編譯器將在需要的地方插入 Integer.valueOf(int) 或 integer.intValue() 。 這意味着實際上可以寫
Integer n = 9;
這被解釋為
Integer n = Integer.valueOf(9);
int
是原始數據類型,而Integer
是 Java 中的引用或包裝類型(類)。
在引入自動裝箱和拆箱概念的java 1.5
之后,您可以像這樣初始化int
或Integer
。
int a= 9
Integer a = 9 // both valid After Java 1.5.
為什么
Integer.parseInt("1");
但不是int.parseInt("1");
??
Integer
是jdk
庫中定義的類, parseInt()
是屬於Integer
類的靜態方法
所以, Integer.parseInt("1");
在java中是可能的。 但int
是 Java 中的原始類型(假設為關鍵字)。 所以,你不能用int
調用parseInt()
。
int
是表示整數的原始類型。 而Integer
是一個包裝int
的對象。 Integer
對象為您提供了更多功能,例如轉換為十六進制、字符串等。
您還可以將 OOP 概念與Integer
。 例如,您可以將 Integer 用於泛型(即Collection
)。<Integer>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.