Sie können tun , Integer n = 9;wegen Autoboxing (es sei denn , Sie eine sehr alte Version von Java verwenden)
Alderath
Antworten:
320
intist ein primitiver Typ. Variablen vom Typ intspeichern den tatsächlichen Binärwert für die Ganzzahl, die Sie darstellen möchten. int.parseInt("1")macht keinen Sinn, weil intes keine Klasse ist und daher keine Methoden hat.
Integerist eine Klasse, die sich in der Java-Sprache nicht von anderen unterscheidet. Variablen vom Typ Integerspeichern Verweise auf IntegerObjekte, genau wie bei jedem anderen Referenztyp (Objekttyp). Integer.parseInt("1")ist ein Aufruf der statischen Methode parseIntaus der Klasse Integer(beachten Sie, dass diese Methode tatsächlich eine intund keine zurückgibt Integer).
Genauer gesagt Integerhandelt es sich um eine Klasse mit einem einzelnen Typfeld int. Diese Klasse wird verwendet, wenn Sie ein intObjekt wie jedes andere Objekt behandeln müssen, z. B. in generischen Typen oder Situationen, in denen Sie die Nullbarkeit benötigen.
Beachten Sie, dass jeder primitive Typ in Java eine entsprechende Wrapper- Klasse hat:
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-Klassen erben von der Object-Klasse und primitive nicht. So kann es in Sammlungen mit Objektreferenz oder mit Generics verwendet werden.
Seit Java 5 haben wir Autoboxing und die Konvertierung zwischen primitiver und Wrapper-Klasse erfolgt automatisch. Beachten Sie jedoch, dass dies zu subtilen Fehlern und Leistungsproblemen führen kann. Es tut nie weh, explizit über Conversions zu sprechen.
Ich möchte darauf hinweisen, dass dies aus zwei Gründen die perfekte Antwort ist: 1- Prägnant und genau, wobei das Publikum / der Fragesteller im Auge behalten wird. 2- Bietet Anweisungen für zusätzliche Details, anstatt alles in den Text der Antwort aufzunehmen. Nicht alle Fragen können so genau und präzise beantwortet werden (einige erfordern viel mehr Details und Nuancen, um genau und vollständig zu sein), aber ich denke, alle Antworten sollten versuchen, so einfach und direkt zu sein.
DRich
11
Heh, ich denke es ist eigentlich das Gegenteil. "int ist ein primitiver Typ" sagt Ihnen nichts, wenn Sie nicht wissen, was ein primitiver Typ ist. (Und wenn Sie dies tun, kennen Sie den Unterschied zwischen int und Integer bereits sehr wahrscheinlich). Das Senden des Lesers an zwei Links mit den Bezeichnungen "Link 1" und "Link 2" ist ziemlich wenig hilfreich, insbesondere im Vergleich zum Zitieren der relevanten Abschnitte.
Steve Bennett
7
Eine Ganzzahl ist so ziemlich nur ein Wrapper für den primitiven Typ int. Sie können alle Funktionen der Integer-Klasse verwenden, um Ihnen das Leben ein wenig zu erleichtern.
Wenn Sie Java noch nicht kennen, sollten Sie die Java-Dokumentation kennenlernen. Zum Beispiel wird alles, was Sie über die Integer-Klasse wissen möchten, detailliert dokumentiert.
Dies geht direkt aus der Dokumentation für die Integer-Klasse hervor:
Die Integer-Klasse 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.
Dies verfehlt etwas den Punkt. Wie Integereine Klasse kann sie beispielsweise in Containern gespeichert werden (im Gegensatz zu primitiven Typen).
Oliver Charlesworth
6
Eine int-Variable enthält einen 32-Bit-Ganzzahlwert mit Vorzeichen. Eine Ganzzahl (mit Großbuchstaben I) enthält einen Verweis auf ein Objekt vom Typ (Klassen-) Ganzzahl oder auf Null.
Java wechselt automatisch zwischen den beiden; von Integer zu int, wenn das Integer-Objekt als Argument für einen int-Operator auftritt oder einer int-Variablen zugewiesen wird oder ein int-Wert einer Integer-Variablen zugewiesen wird. Dieses Casting nennt man Boxen / Unboxen.
Wenn eine Integer-Variable, die auf null verweist, explizit oder implizit deaktiviert ist, wird eine NullPointerException ausgelöst.
(Im obigen Text bedeutet der Begriff "Variable" lokale Variable, Feld oder Parameter)
Integerbezieht sich auf den Wrapper-Typ in Java, während intes sich um einen primitiven Typ handelt. Alles außer primitiven Datentypen in Java wird genauso implementiert wie Objekte, die implizieren, dass Java eine hochqualifizierte reine objektorientierte Programmiersprache ist. Bei Bedarf sind alle Primitivtypen auch als Wrapper-Typen in Java verfügbar. Mit primitiven Typen können Sie einige Leistungsvorteile erzielen. Daher sollten Wrapper-Typen nur verwendet werden, wenn dies erforderlich ist.
In Ihrem Beispiel wie unten.
Integer n =9;
Die Konstante 9wird automatisch geboxt ( auto-boxingund unboxingtritt automatisch ab java 5) auf, Integerund daher können Sie die Anweisung auch so und auch verwenden Integer n = new Integer(9). Dies wird tatsächlich durch die Aussage erreichtInteger.valueOf(9).intValue();
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 neuerem Java gibt es Funktionen für das automatische Boxen (und Unboxing). Das bedeutet, dass der Compiler bei Bedarf Integer.valueOf (int) oder integer.intValue () einfügt. Das heißt, es ist tatsächlich möglich zu schreiben
Integer ist eine Wrapper-Klasse / ein Wrapper-Objekt und int ist ein 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 ab wegen Autoboxing ist es eine ganz andere Geschichte.
JDK5 + akzeptiert auch nur Objekte. Es ist nur so, dass Autoboxing den Compiler automatisch Integer.valueOf(i)oder Integer.intValue()für Sie aufrufen lässt . Collection<int>wird immer noch nicht funktionieren. Es ist also keine ganz andere Geschichte - es ist dieselbe Geschichte, nur mit ein bisschen Kurzschrift.
Yshavit
einverstanden. Entschuldigung, meine Formulierung spiegelt dies möglicherweise nicht wider.
kosa
3
In Java ist int ein primitiver Datentyp, während Integer eine Helper-Klasse ist. Es wird verwendet, um einen Datentyp in einen anderen zu konvertieren.
intist ein primitiver Typ, der eine Ganzzahl darstellt. während Integerist ein Objekt, das umschließt int. DasInteger Objekt bietet Ihnen mehr Funktionen, z. B. das Konvertieren in Hex, String usw.
Sie können auch OOP-Konzepte mit verwenden Integer. Beispielsweise können Sie Integer für Generika verwenden (dh ).Collection<Integer>
Java verwendet primitive Typen (auch einfache Typen genannt) wie int oder double , um die von der Sprache unterstützten Basisdatentypen zu speichern. Aus Gründen der Leistung werden für diese Größen primitive Typen anstelle von Objekten verwendet . Die Verwendung von Objekten für diese Werte würde selbst den einfachsten Berechnungen einen inakzeptablen Overhead hinzufügen . Daher sind die primitiven Typen nicht Teil der Objekthierarchie und erben kein Objekt .
Trotz des Leistungsvorteils, den die primitiven Typen bieten, benötigen Sie manchmal eine Objektdarstellung. Beispielsweise können Sie einen primitiven Typ nicht als Referenz auf eine Methode übergeben . Viele der von Java implementierten Standarddatenstrukturen arbeiten auch mit Objekten. Dies bedeutet, dass
Sie diese (objektspezifischen) Datenstrukturen nicht zum Speichern primitiver Typen verwenden können . Um diese (und andere) Situationen zu bewältigen, bietet Java Typ-Wrapper, Klassen, die einen primitiven Typ in einem Objekt kapseln.
Wrapper-Klassen beziehen sich direkt auf die Autoboxing-
Funktion von Java . Die Typ-Wrapper sind Double, Float, Long, Integer, Short, Byte, Character und Boolean . Diese Klassen bieten eine Vielzahl von Methoden, mit denen Sie die primitiven Typen vollständig in die Objekthierarchie von Java integrieren können.
Zur Optimierung der Java - Code Laufzeit, intprimitive Art (en) einschließlich hinzugefügt wurde float, boolusw. , aber sie kommen zusammen mit dort Wrapper - Klassen , so dass erforderlich , wenn Sie konvertieren und sie als Standard - Java - Objekt zusammen mit vielen Dienstprogramm verwenden können , die als Mitglied kommen Funktionen (wie Integer.parseInt("1")).
intist ein primitiver Datentyp, während Integeres sich in Java um einen Referenz- oder Wrapper-Typ (Klasse) handelt.
nach java 1.5dem einführen , das Konzept der Autoboxing und Unboxing Sie beide initialisieren kann intoder Integerso.
int a=9Integer a =9// both valid After Java 1.5.
warum Integer.parseInt("1");aber nicht int.parseInt("1");??
Integerist eine in der jdkBibliothek definierte Klasse und parseInt()gehört zu einer statischen MethodeInteger Klasse gehört
So Integer.parseInt("1");ist in Java möglich. ist aber intprimitiver Typ (wie ein Schlüsselwort annehmen) in Java. So können Sie nicht rufen Sie parseInt()mit int.
Integer n = 9;
wegen Autoboxing (es sei denn , Sie eine sehr alte Version von Java verwenden)Antworten:
int
ist ein primitiver Typ. Variablen vom Typint
speichern den tatsächlichen Binärwert für die Ganzzahl, die Sie darstellen möchten.int.parseInt("1")
macht keinen Sinn, weilint
es keine Klasse ist und daher keine Methoden hat.Integer
ist eine Klasse, die sich in der Java-Sprache nicht von anderen unterscheidet. Variablen vom TypInteger
speichern Verweise aufInteger
Objekte, genau wie bei jedem anderen Referenztyp (Objekttyp).Integer.parseInt("1")
ist ein Aufruf der statischen MethodeparseInt
aus der KlasseInteger
(beachten Sie, dass diese Methode tatsächlich eineint
und keine zurückgibtInteger
).Genauer gesagt
Integer
handelt es sich um eine Klasse mit einem einzelnen Typfeldint
. Diese Klasse wird verwendet, wenn Sie einint
Objekt wie jedes andere Objekt behandeln müssen, z. B. in generischen Typen oder Situationen, in denen Sie die Nullbarkeit benötigen.Beachten Sie, dass jeder primitive Typ in Java eine entsprechende Wrapper- Klasse hat:
byte
hatByte
short
hatShort
int
hatInteger
long
hatLong
boolean
hatBoolean
char
hatCharacter
float
hatFloat
double
hatDouble
Wrapper-Klassen erben von der Object-Klasse und primitive nicht. So kann es in Sammlungen mit Objektreferenz oder mit Generics verwendet werden.
Seit Java 5 haben wir Autoboxing und die Konvertierung zwischen primitiver und Wrapper-Klasse erfolgt automatisch. Beachten Sie jedoch, dass dies zu subtilen Fehlern und Leistungsproblemen führen kann. Es tut nie weh, explizit über Conversions zu sprechen.
quelle
C#
allen Datentypen haben "Aliase" undint.Parse()
macht Sinn (obwohl es wirklich nicht tut)C#
ist hier völlig irrelevant.Ganzzahl ist eine Klasse und int ist ein primitiver Typ.
Lesen Sie weiter unter diesen Links:
quelle
Eine Ganzzahl ist so ziemlich nur ein Wrapper für den primitiven Typ int. Sie können alle Funktionen der Integer-Klasse verwenden, um Ihnen das Leben ein wenig zu erleichtern.
Wenn Sie Java noch nicht kennen, sollten Sie die Java-Dokumentation kennenlernen. Zum Beispiel wird alles, was Sie über die Integer-Klasse wissen möchten, detailliert dokumentiert.
Dies geht direkt aus der Dokumentation für die Integer-Klasse hervor:
Die Integer-Klasse 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.
quelle
Integer
eine Klasse kann sie beispielsweise in Containern gespeichert werden (im Gegensatz zu primitiven Typen).Eine int-Variable enthält einen 32-Bit-Ganzzahlwert mit Vorzeichen. Eine Ganzzahl (mit Großbuchstaben I) enthält einen Verweis auf ein Objekt vom Typ (Klassen-) Ganzzahl oder auf Null.
Java wechselt automatisch zwischen den beiden; von Integer zu int, wenn das Integer-Objekt als Argument für einen int-Operator auftritt oder einer int-Variablen zugewiesen wird oder ein int-Wert einer Integer-Variablen zugewiesen wird. Dieses Casting nennt man Boxen / Unboxen.
Wenn eine Integer-Variable, die auf null verweist, explizit oder implizit deaktiviert ist, wird eine NullPointerException ausgelöst.
(Im obigen Text bedeutet der Begriff "Variable" lokale Variable, Feld oder Parameter)
quelle
Integer
bezieht sich auf den Wrapper-Typ in Java, währendint
es sich um einen primitiven Typ handelt. Alles außer primitiven Datentypen in Java wird genauso implementiert wie Objekte, die implizieren, dass Java eine hochqualifizierte reine objektorientierte Programmiersprache ist. Bei Bedarf sind alle Primitivtypen auch als Wrapper-Typen in Java verfügbar. Mit primitiven Typen können Sie einige Leistungsvorteile erzielen. Daher sollten Wrapper-Typen nur verwendet werden, wenn dies erforderlich ist.In Ihrem Beispiel wie unten.
Die Konstante
9
wird automatisch geboxt (auto-boxing
undunboxing
tritt automatisch abjava 5
) auf,Integer
und daher können Sie die Anweisung auch so und auch verwendenInteger n = new Integer(9)
. Dies wird tatsächlich durch die Aussage erreichtInteger.valueOf(9).intValue();
quelle
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 neuerem Java gibt es Funktionen für das automatische Boxen (und Unboxing). Das bedeutet, dass der Compiler bei Bedarf Integer.valueOf (int) oder integer.intValue () einfügt. Das heißt, es ist tatsächlich möglich zu schreiben
was interpretiert wird als
quelle
Integer ist eine Wrapper-Klasse / ein Wrapper-Objekt und int ist ein 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 ab wegen Autoboxing ist es eine ganz andere Geschichte.
quelle
Integer.valueOf(i)
oderInteger.intValue()
für Sie aufrufen lässt .Collection<int>
wird immer noch nicht funktionieren. Es ist also keine ganz andere Geschichte - es ist dieselbe Geschichte, nur mit ein bisschen Kurzschrift.In Java ist int ein primitiver Datentyp, während Integer eine Helper-Klasse ist. Es wird verwendet, um einen Datentyp in einen anderen zu konvertieren.
Beispielsweise:
Primitive Datentypen speichern den schnellsten verfügbaren Speicher, in dem die Helper-Klasse komplex ist, und speichern ihn im Heap-Speicher.
Referenz aus "David Gassner" Java Essential Training.
quelle
int
ist ein primitiver Typ, der eine Ganzzahl darstellt. währendInteger
ist ein Objekt, das umschließtint
. DasInteger
Objekt bietet Ihnen mehr Funktionen, z. B. das Konvertieren in Hex, String usw.Sie können auch OOP-Konzepte mit verwenden
Integer
. Beispielsweise können Sie Integer für Generika verwenden (dh ).Collection
<Integer>
quelle
Dies stammt aus Java: The Complete Reference, 9. Ausgabe
quelle
Zur Optimierung der Java - Code Laufzeit,
int
primitive Art (en) einschließlich hinzugefügt wurdefloat
,bool
usw. , aber sie kommen zusammen mit dort Wrapper - Klassen , so dass erforderlich , wenn Sie konvertieren und sie als Standard - Java - Objekt zusammen mit vielen Dienstprogramm verwenden können , die als Mitglied kommen Funktionen (wieInteger.parseInt("1")
).quelle
int
ist ein primitiver Datentyp, währendInteger
es sich in Java um einen Referenz- oder Wrapper-Typ (Klasse) handelt.nach
java 1.5
dem einführen , das Konzept der Autoboxing und Unboxing Sie beide initialisieren kannint
oderInteger
so.Integer
ist eine in derjdk
Bibliothek definierte Klasse undparseInt()
gehört zu einer statischen MethodeInteger
Klasse gehörtSo
Integer.parseInt("1");
ist in Java möglich. ist aberint
primitiver Typ (wie ein Schlüsselwort annehmen) in Java. So können Sie nicht rufen SieparseInt()
mitint
.quelle