1. Lijst met soorten wikkels
U weet dat Java 8 primitieve typen heeft, dit zijn typen die geen klassen zijn. Aan de ene kant is dit goed - ze zijn eenvoudig en nemen weinig ruimte in beslag. Aan de andere kant zijn lessen soms precies wat we nodig hebben. Waarom dat precies is, lees je in de volgende les.
Dus wat kan er gedaan worden?
Vanaf de vijfde versie van Java kreeg elk primitief type een dubbele klasse. Elke dergelijke klasse slaat een enkel veld op met een waarde van een specifiek type. Deze klassen worden wrappertypes genoemd , omdat ze primitieve waarden in klassen verpakken.
Hier is een lijst van deze typen. Weet jij er een?
Primitieve soort | Wrapper klasse |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
De namen van primitieve typen beginnen met een kleine letter, maar de namen van de wrapperklassen beginnen met een hoofdletter. Sommige klassennamen zijn ook iets langer: Integer
instead of int
и Character
instead of char
.
Alle objecten van de wrapper-klassen zijn onveranderlijk ( onveranderlijk ).
Vereenvoudigde code voor de Integer
klasse ziet er ongeveer zo uit:
Code | Opmerking |
---|---|
|
Variabele Constructor De methode retourneert een waarde De statische methode maakt een nieuw Integer object voor een int variabele |
2. Een omzetten int
naar eenInteger
Wrapper-typen worden beschouwd als tegenhangers van hun primitieve broers en zussen: u kunt eenvoudig een wrapper-object maken dat overeenkomt met een primitief type.
Laten we het int-type als voorbeeld gebruiken om te analyseren hoe primitieve typen interageren met hun overeenkomstige wrapper-typen. De code voor het converteren van een int
naar een Integer
en vice versa ziet er als volgt uit:
Om een int
naar een te converteren Integer
, moet je deze code schrijven:
Integer name = new Integer(value);
Waar name
is de naam van een Integer
variabele en value
is de ingepakte int
waarde.
Voorbeelden:
Code | Opmerking |
---|---|
|
|
|
|
|
En om de an Integer
naar een te converteren int
, moet je deze code schrijven:
int name = variable.intValue();
Waar name
is de naam van een int
variabele en variable
is een verwijzing naar een Integer
object.
Voorbeelden:
Code | Opmerking |
---|---|
|
|
|
|
|
|
|
|
3. Autoboxen en uitpakken
Maar zelfs eenvoudige bewerkingen met het Integer
type zijn niet gemakkelijk te schrijven.
Zoals we eerder zeiden, Integer
is het type onveranderlijk ( onveranderlijk ). Als u een Integer
object met een nieuwe int
waarde wilt maken, moet u expliciet een nieuw Integer
object maken. Dat gezegd hebbende, het is gemakkelijk om de waarde van een int
opgeslagen in een Integer
object te krijgen - roep gewoon de intValue()
methode aan.
Voorbeeld:
Code | Beschrijving |
---|---|
|
Wikkel 5 een Integer object in Haal de waarde uit het Integer object Maak een nieuw Integer object (gelijk aan 10) |
Dit is nogal omslachtige code, vind je niet?
De makers van Java dachten van wel, dus leerden ze de compiler hoe deze bewerkingen automatisch moesten worden uitgevoerd. De automatische conversie van an int
naar an wordt autoboxingInteger
genoemd (automatisch de waarde in een box plaatsen), en de omgekeerde bewerking (conversie van an naar een ) wordt unboxing genoemd .Integer
int
Jouw code | Wat de compiler ziet |
---|---|
|
|
|
|
|
|
Dankzij autoboxing en unboxing kun je veilig een int
aan een Integer
variabele toewijzen en vice versa. U kunt uitdrukkingen van elke complexiteit schrijven zonder een onderscheid te maken tussen de typen int
en Integer
.
Voorbeelden:
Code | Wat de compiler zal genereren |
---|---|
|
|
|
|
4. Wrappervariabelen vergelijken
Autoboxing en unboxing zijn eenvoudige en transparante processen. We gebruiken new Integer()
verklaringen als dat nodig is, en we roepen de intValue()
methode aan als dat nodig is.
Alles werkt lekker makkelijk voor jou, de programmeur. Houd er rekening mee dat als u an Integer
en an vergelijkt Integer
, de vergelijking gebaseerd is op referentie en niet op waarden.
Code | Console-uitvoer |
---|---|
|
|
|
|
De variabelen a
en b
slaan geen int
waarden op. Ze slaan verwijzingen naar objecten op. Dat betekent dat het belangrijk is om te onthouden hoe u ze correct kunt vergelijken:
Fout | Rechts |
---|---|
|
|
GO TO FULL VERSION