Was ist der Unterschied zwischen Integer und Int in Java?

Zum Beispiel warum können Sie tun:

int n = 9; 

Aber nicht:

 Integer n = 9; 

Und du kannst:

 Integer.parseInt("1"); 

Aber nicht:

 int.parseInt("1"); 

   

int ist ein primitiver Typ. Variablen vom Typ int speichern den tatsächlichen Binärwert für die Ganzzahl, die Sie darstellen möchten. int.parseInt("1") macht keinen Sinn, da int keine class ist und daher keine Methoden hat.

Integer ist eine class, unterscheidet sich von keiner anderen in der Java-Sprache. Variablen vom Typ Integer speichern Referenzen auf Integer Objekte, genau wie bei jedem anderen Referenztyp (Objekt). Integer.parseInt("1") ist ein Aufruf der statischen Methode parseInt aus der class Integer (beachten Sie, dass diese Methode tatsächlich einen int und keine Integer zurückgibt).

Um genauer zu sein, Integer ist eine class mit einem einzelnen Feld vom Typ int . Diese class wird verwendet, wenn Sie ein int benötigen, das wie jedes andere Objekt behandelt wird, z. B. in generischen Typen oder Situationen, in denen Sie NULL-Werte benötigen.

Beachten Sie, dass jeder primitive Typ in Java über eine entsprechende Wrapper- class verfügt:

  • byte hat Byte
  • short hat Short
  • int hat Integer
  • long hat Long
  • boolean hat Boolean
  • char hat Character
  • float hat Float
  • double hat Double

Wrapper-classn erben von der Object-class und Primitive nicht. So kann es in Sammlungen mit Objektreferenz oder mit Generika verwendet werden.

Seit Java 5 haben wir Autoboxing, und die Konvertierung zwischen primitiven und Wrapper-class erfolgt automatisch. Aber Vorsicht, da dies zu subtilen Fehlern und performancesproblemen führen kann. Explizit über Conversions zu sein, tut nie weh.

Ganzzahl ist eine class und int ist ein primitiver Typ.

Lesen Sie weiter unter diesen Links:

  • Link 1
  • Link 2

Ein Integer ist eigentlich nur ein Wrapper für den primitiven Typ int. Es ermöglicht Ihnen, alle functionen der Integer-class zu nutzen, um Ihnen das Leben ein wenig zu erleichtern.

Wenn Sie neu in Java sind, sollten Sie die Java-Dokumentation kennenlernen. Zum Beispiel ist alles, was Sie über die Integer-class wissen möchten, detailliert dokumentiert.

Dies ist direkt aus der Dokumentation für die Integer-class:

Die Integer-class umschließt einen Wert des primitiven Typs int in einem Objekt. Ein Objekt vom Typ Integer enthält ein einzelnes Feld, dessen Typ int ist.

Integer bezieht sich auf Wrapper-Typ in Java, während int ein primitiver Typ ist. Alles außer primitiven Datentypen in Java ist genauso implementiert wie Objekte, die implizieren, dass Java eine hoch qualifizierte reine objektorientierte Programmiersprache ist. Wenn Sie möchten, sind alle Primitivtypen auch als Wrapper-Typen in Java verfügbar. Mit primitiven Typen können Sie einen gewissen performancesvorteil erzielen, weshalb Wrapper-Typen nur dann verwendet werden sollten, wenn dies erforderlich ist.

In Ihrem Beispiel wie folgt.

 Integer n = 9; 

Die Konstante 9 wird automatisch eingerahmt ( auto-boxing und unboxing erfolgt automatisch ab java 5 ), und Sie können die statement wie folgt verwenden und auch Integer n = new Integer(9) . Dies wird tatsächlich durch die statement Integer.valueOf(9).intValue();

Eine int-Variable enthält einen 32-Bit-Ganzzahlwert mit Vorzeichen. Eine Ganzzahl (mit Großbuchstabe I) enthält einen Verweis auf ein Objekt vom (classn-) Typ Integer oder auf Null.

Java wandelt automatisch zwischen den beiden um. von Integer zu int, wenn das Integer-Objekt als Argument für einen int-Operator auftritt oder einer int-Variablen zugewiesen ist oder wenn der int-Wert einer Integer-Variablen zugewiesen ist. Dieses Casting wird Boxen / Unboxing genannt.

Wenn eine Integer-Variable, die auf null verweist, explizit oder implizit deaktiviert wird, wird eine NullPointerException ausgetriggers.

(Im obigen Text bedeutet der Begriff “Variable” lokale Variable, Feld oder Parameter)

int ist ein primitiver Typ und kein Objekt. Das bedeutet, dass keine Methoden damit verbunden sind. Integer ist ein Objekt mit Methoden (z. B. parseInt).

Mit neueren Java gibt es functionen für automatisches Boxen (und Unboxing). Das bedeutet, dass der Compiler bei Bedarf Integer.valueOf (int) oder integer.intValue () einfügt. Das bedeutet, dass es tatsächlich möglich ist zu schreiben

 Integer n = 9; 

was als interpretiert wird

 Integer n = Integer.valueOf(9); 

Integer ist eine Wrapper-class / Objekt und int ist primitiver Typ. Dieser Unterschied spielt eine große Rolle, wenn Sie int-Werte in einer Sammlung speichern möchten, da sie nur Objekte als Werte akzeptieren (bis jdk1.4). JDK5 weiter wegen Autoboxing ist es ganz andere Geschichte.

int ist ein primitiver Typ, der eine Ganzzahl darstellt. wohingegen Integer ein Objekt ist, das int . Das Integer Objekt bietet mehr functionen, z. B. Konvertieren in Hexadezimalzeichen, Zeichenfolge usw.

Sie können OOP-Konzepte auch mit Integer . Zum Beispiel können Sie Integer für Generika verwenden (dh Collection ).

Um die Java-Code-Laufzeit zu optimieren, wurden primitive Typ-Typen wie float , bool usw. hinzugefügt, aber sie kommen mit Wrapper-classn daher, so dass sie bei Bedarf konvertiert und als Standard-Java-Objekt verwendet werden können als ihre Mitgliedsfunktionen (wie Integer.parseInt("1") ).

In Java ist int ein primitiver Datentyp, während Integer eine Helper-class ist, die für die Konvertierung von einem Datentyp in einen anderen verwendet wird.

Beispielsweise:

  double doubleValue = 156.5d; Double doubleObject = new Double(doubleValue); Byte myByteValue = doubleObject.byteValue (); String myStringValue = doubleObject.toString(); 

Primitive Datentypen speichern den schnellsten verfügbaren Speicher, in dem die Helper-class komplex ist und im Heap-Speicher gespeichert wird.

Referenz von “David Gassner” Java Essential Training.

int ist ein primitiver Datentyp, während Integer ein Referenz- oder Wrapper-Typ (class) in Java ist.

Nach java 1.5 das das Konzept von Autoboxing und Unboxing einführt, können Sie sowohl int als auch Integer so initialisieren.

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

warum Integer.parseInt("1"); aber nicht int.parseInt("1"); ??

Integer ist eine in jdk library definierte class und parseInt() ist eine statische Methode, die zur Integer class gehört

Also, Integer.parseInt("1"); ist in Java möglich. aber int ist ein primitiver Typ (nehme an wie ein Schlüsselwort) in Java. Sie können also parseInt() mit int aufrufen.

Dies stammt aus Java: The Complete Reference, Neunte Ausgabe

Java verwendet primitive Typen (auch einfache Typen genannt) wie int oder double , um die von der Sprache unterstützten grundlegenden Datentypen zu speichern. Primitive Typen anstelle von Objekten werden für diese Größen der performance halber verwendet . Die Verwendung von Objekten für diese Werte würde selbst für die einfachsten Berechnungen einen unannehmbaren Mehraufwand bedeuten. Daher sind die primitiven Typen nicht Teil der Objekthierarchie und sie erben nicht Objekt .

Trotz des performancesvorteils, den die primitiven Typen bieten, gibt es Zeiten, in denen Sie eine Objektdarstellung benötigen. Beispielsweise können Sie einen primitiven Typ nicht durch Verweis auf eine Methode übergeben . Viele der von Java implementierten Standarddatenstrukturen arbeiten auch mit Objekten, was bedeutet, dass Sie diese (objektspezifischen) Datenstrukturen nicht zum Speichern primitiver Typen verwenden können . Um diese (und andere) Situationen zu behandeln, stellt Java Wrappers bereit, bei denen es sich um classn handelt, die einen primitiven Typ in einem Objekt kapseln.

Wrapper-classn beziehen sich direkt auf die Autobox- function von Java. Die Typwrapper sind Double, Float, Long, Integer, Short, Byte, Character und Boolean . Diese classn bieten eine breite Palette von Methoden, mit denen Sie die primitiven Typen vollständig in die Objekthierarchie von Java integrieren können.