簡體   English   中英

Java中的Integer和int有什么區別?

[英]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 中的每個原始類型都有一個等效的包裝類:

  • byteByte
  • short Short
  • intInteger
  • longLong
  • booleanBoolean
  • charCharacter
  • floatFloat
  • doubleDouble

包裝類繼承自 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-boxingunboxingjava 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:完整參考,第九版

Java 使用原始類型(也稱為簡單類型),例如intdouble來保存語言支持的基本數據類型。 為了性能原始類型而不是對象用於這些數量。 即使是最簡單的計算,將對象用於這些值也會增加不可接受的開銷 因此,原始類型不是對象層次結構的一部分,並且它們不繼承 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之后,您可以像這樣初始化intInteger

int a= 9
Integer a = 9 // both valid After Java 1.5.

為什么Integer.parseInt("1"); 但不是int.parseInt("1"); ??

Integerjdk庫中定義的類, parseInt()是屬於Integer類的靜態方法

所以, Integer.parseInt("1"); 在java中是可能的。 int是 Java 中的原始類型(假設為關鍵字)。 所以,你不能用int調用parseInt()

int是表示整數的原始類型。 Integer是一個包裝int的對象。 Integer對象為您提供了更多功能,例如轉換為十六進制、字符串等。

您還可以將 OOP 概念與Integer 例如,您可以將 Integer 用於泛型(即Collection <Integer> )。

為了優化 Java 代碼運行時,添加了int 基本類型,包括floatbool等,但它們與包裝類一起出現,因此如果需要,您可以將它們轉換並用作標准 Java 對象以及許多附帶的實用程序作為它們的成員函數(例如Integer.parseInt("1") )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM