Frage

Kann mir jemand erklären, die Verwendung von Integer, Boolean usw. anstelle ihrer primitiven Typen in JAVA?

Ich kann nicht die Vorteile scheinen zu begreifen ihre bieten. Sie scheinen, um unnötige Probleme zu schaffen, die NULL-Werte handhaben.

Danke!

War es hilfreich?

Lösung

Boolean, Integer, Long, ... sind Objekte. Sie können sie an Orten, wo man nicht primitive Typen verwenden können, beispielsweise

  • sie in einer Sammlung wie ein Map Speichern
  • , sie als Template-Parameter
  • sie einen null Wert zuweisen
  • sie in allgemeinerer Art und Weise (z.B. Long als Number)

Beispiele:

new ArrayList<Integer>();
Long id = null;
Number num = new Long( 3 );

Andere Tipps

Die Begründung für Integer, Boolean, und so ist auf primitive Typen zu ermöglichen, in Kontexten verwendet werden, die einen Referenztyp erfordern. Der klassische Anwendungsfall ist die Sammlung APIs, die Sets bieten, Listen, Karten, Warteschlangen und so weiter, wo der Elementtyp einige Referenztypen sein muss.

So kann ich schreiben:

List<Integer> list = new ArrayList<Integer>();

aber die folgende ist ein Übersetzungsfehler:

List<int> list = new ArrayList<int>();

Beachten Sie, dass dieser Anwendungsfall für die primitiven Wrapper-Typen früher sowohl generische Typen und die „neuen“ Sammlungen APIs und geht zurück zu den Tagen, wo die einzige Sammlung Typen waren die ursprünglichen (pre-generic) Formen der Vector und Hashtable und Konsorten.

Manchmal braucht man wirklich Wert auf NULL festlegbare zu sein, zum Beispiel wenn Ihre Anwendung speichert Benutzerdaten, eine Sozialversicherungs # unbekannt sein können. In diesem Fall zum Speichern von null es den Reiniger statt -1.

Es gibt auch Dinge, die Sie mit primitiven Typen nicht tun können, wie sie in einer Karte zu speichern oder mit Polymorphismus (Doppel und Integer sind beide Instanzen Number).

Primitive sind immer schneller.
aber es gibt Zeiten, wenn Objekte sind wirklich nützlich:
1. Upcasting. Ihre Funktion kann nehmen Nummer (ein Elternteil ist für alle numerischen Objekte: Integer, Float, etc.). Für ein Argument
2. Möglicher Nullwert. Zum Beispiel ist es, während die Speicherung in der Datenbank verwendet. Objekt kann null sein, Primitiven muss Wert haben. Also, wenn das Feld in db nullable ist, ist es besser zu nutzen Objektversion von Grundwert.
3. wenn Funktion übernimmt Objekt und Sie es immer eine primitive geben gibt es Ausgaben für Autoboxing (Drehen primitive in Objekt). Das gleiche gilt für von der Funktion zurückkehrt.
4. Objekte haben bestimmte Methoden, wie GetHashCode (), toString () usw., die in einigen Fällen wirklich nützlich sein kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top