Ein primitiver Typ und ein komplexer Typ unterscheiden sich hauptsächlich in der Art, wie Daten gespeichert werden. Sie suchen tatsächlich auf die Unterschiede zwischen einem primitiven Typ und einem Klassentyp
1. Jede Variable als Standort in dem Computerspeicher gespeichert ist.
Die obige Anweisung gilt sowohl für primitive Typen als auch für Klasse Typen.
Die Unterschiede:
2. Für eine Urtyp: Der Wert der Variablen wird in dem Speicherplatz zu der Variablen zugeordnet gespeichert.
Das heißt, wenn wir int x = 10
zugewiesen, wird der Wert von x
in gespeichert, in dem der Wert von 10
gespeichert ist, das heißt die Speicherstelle. Das heißt wenn wir "x" ansehen, wird '10' dort gespeichert. Vielleicht wäre es an denken an sie eher wie eine „Zuordnung“ helfen, wo Sie gebieten, daß x gleich 10.
3. Für einen Klassentyp sein: Es speichert nur die Speicheradresse das Objekt Das speichert den Wert. Es hält das Objekt nicht direkt.
Integer x = 10 wird eine Speicheradresse, die int Objekt der Typ weist auf, der dann den Wert von 10 halten wird dies als Referenz bekannt ist. Stellen Sie es sich als ein Verzeichnis vor, das Sie anweist, zu welchem Regal zu gehen, um den Wert tatsächlich abzurufen.
Auch
Klassentypen werden auch als Referenztypen oder Objekttypen bekannt, das heißt, sie alle ein Objekt einer Klasse bedeuten (sei es eine Integer-Klasse oder MyPerson Klasse).
Primitive Typen sind keine Referenztypen, da sie keine Referenzen (Speicheradressen) enthalten.
Diese Unterscheidung ist der Grund für die „Wrapper-Klassen“ in der täglichen Gebrauch, und Typen wie Integer
werden als Wrapper-Klasse zu einem int
, gesehen für die Datenmanipulation zu ermöglichen, wie ganze Zahlen in einer Datenstruktur wie eine Arraylist speichern . Weil ints
ein primitiver Datentyp ist, ist kein object
, während Integer
ist. Da primitive Typen keine Objekte sind, müssen wir sie in eine Klasse einfügen, damit wir sie zu Listen, Wörterbüchern usw. hinzufügen können. Auf diese Weise haben wir eine Liste von Objekten (die auf die primitiven Typen verweisen) kein nackter primitiver Datentyp allein. Siehe this SO question for further info
Weitere Informationen über den Unterschied zwischen einem primitiven und nicht-primitiven (auch bekannt als Klasse/Referenz/Objekttyp) ist detailliert here. Sie haben ein schönes Diagramm, das es auch veranschaulicht.
ist es nicht ** eine Referenz ** in den Speicherort? –
@KickButtowski Für komplexe Typen, ja. Was ich nicht verstehe ist, dass etwas auf x zeigt, was ein primitiver Typ ist. – Evorlor
Wenn Sie sagen, zeigen Sie mir Zeiger in C und C++, die wir in Java nicht haben. –