Manchmal sehe ich, dass APIs long
oder Long
oder int
oder verwenden Integer
, und ich kann nicht herausfinden, wie die Entscheidung dafür getroffen wird?
Wann soll ich was wählen?
Long
ist die Object
Form von long
und Integer
ist die Objektform von int
.
Der long
verwendet 64 Bit . Der int
verwendet 32 Bit und kann daher nur Zahlen bis zu ± 2 Milliarden (-2 31 bis +2 31 -1) aufnehmen.
Sie sollten long
und verwenden int
, es sei denn, Sie müssen Methoden verwenden, von denen geerbt wurde Object
, z hashcode
. Java.util.collections
Methoden verwenden normalerweise die Box- Object
Versionen ( umhüllt), da sie für alle funktionieren Object
müssen und ein primitiver Typ wie int
oder long
kein ist Object
.
Ein weiterer Unterschied besteht darin , dass long
und int
sind Pass-by-Wert , während Long
und Integer
sind Pass-by-Referenzwert , wie alle nicht-primitive Java - Typen. Wenn es also möglich wäre, ein Long
oder zu ändern Integer
(es ist nicht so, dass sie ohne Verwendung von JNI-Code unveränderlich sind), gäbe es einen anderen Grund, einen über den anderen zu verwenden.
Ein letzter Unterschied ist, dass ein Long
oder sein Integer
könnte null
.
Es gibt einige Dinge, die Sie mit einem primitiven Typ nicht tun können:
null
WertObject
s funktioniertSofern Sie keinen dieser Typen benötigen, sollten Sie primitive Typen bevorzugen, da diese weniger Speicher benötigen.
quelle
int
, wenn Sie Zahlen halten.int
zu klein ist, verwenden Sie along
long
zu klein ist, verwenden SieBigInteger
Collection
, Handlingnull
, ...), verwenden Sie stattdessenInteger
/Long
quelle
An
int
ist eine 32-Bit-Ganzzahl. along
ist eine 64-Bit-Ganzzahl. Welche verwendet werden soll, hängt davon ab, wie groß die Zahlen sind, mit denen Sie voraussichtlich arbeiten werden.int
undlong
sind primitive Typen, währendInteger
undLong
Objekte sind. Primitive Typen sind effizienter, aber manchmal müssen Sie Objekte verwenden. Beispielsweise können Javas Auflistungsklassen nur mit Objekten arbeiten. Wenn Sie also eine Liste von Ganzzahlen benötigen, müssen Sie diese beispielsweise zu einer Liste machenList<Integer>
(die Sie nicht direktint
in einer verwendenList
können).quelle
Integer ist ein vorzeichenbehafteter 32-Bit-Integer-Typ
Int
32 bits (4byte)
-2,147,483,648 to 2,147,483,647
Long ist ein vorzeichenbehafteter 64-Bit-Integer-Typ
Long
64 bits (8byte)
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
Wenn Ihre Verwendung einer Variablen in den 32-Bit-Bereich fällt, verwenden Sie
Int
, andernfalls verwenden Sielong
. Normalerweise wird long für wissenschaftliche Berechnungen verwendet und solche Dinge erfordern viel Genauigkeit. (zB Wert von pi).quelle
Wenn Sie eine sehr lange Zahl verwenden möchten, deren Darstellung 32 Bit überschreiten kann, können Sie long verwenden, um sicherzustellen, dass Sie kein seltsames Verhalten haben.
Ab Java 5 können Sie In-Boxing- und Out-Boxing-Funktionen verwenden, um die Verwendung von int und Integer vollständig gleich zu machen. Es bedeutet, dass Sie Folgendes tun können:
Die in und aus Boxen können Sie zwischen int und Integer ohne zusätzliche Konvertierung wechseln (gleich für
Long
,Double
,Short
auch)Sie können verwenden die
int
ganze Zeit, aberInteger
enthält einige Hilfsmethoden , die Sie einige komplexe Operationen mit ganzen Zahlen zu tun , helfen kann (wieInteger.parseInt(String)
)quelle
a) Objektklasse "Long" versus primitiver Typ "Long". (Zumindest in Java)
b) Es gibt verschiedene (sogar unklare) Speichergrößen der primitiven Typen:
Java - alles klar: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
C .. nur Chaos: https://en.wikipedia.org/wiki/C_data_types
quelle