Autoboxning (oföränderliga) - 1

"Hej, Amigo!"

"Idag ska jag berätta om autoboxning . AutoBoxing betyder att automatiskt lägga något i en låda."

"Du kommer ihåg att Java har typer som ärver Object-klassen, såväl som primitiva typer. Men det visar sig att praktiska saker som samlingar och generika bara fungerar med typer som ärver Object."

"Då togs beslutet att göra en icke-primitiv motsvarighet av varje primitiv typ."

Primitiv typ Icke-primitiv motsvarighet
byte Byte
kort Kort
int Heltal
lång Lång
flyta Flyta
dubbel Dubbel
booleskt Boolean
röding Karaktär
tomhet Tomhet

"Men det är väldigt obekvämt att konvertera mellan dessa typer hela tiden:"

int x = 3;
Integer y = new Integer(x + 1);
int z = y.intValue();

"Särskilt när man arbetar direkt med samlingar:"

Exempel
int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
 list.add( new Integer(i));
}

"Det är därför Javas skapare uppfann "autoboxning" av primitiva typer och "unboxing" till sina icke-primitiva motsvarigheter."

"Så här fungerar det:

Vad du ser Vad händer egentligen
int x = 3;
Integer y = x + 1;
int x = 3;
Integer y = Integer.valueOf(x + 1);
int z = y;
int z = y.intValue();
Boolean b = Boolean.FALSE;
boolean a = b;
Boolean b = Boolean.FALSE;
boolean a = b.booleanValue();
Integer x = null;
int y = x;
Integer x = null; int y = x.intValue(); //Throws an exception

"Allt är enkelt. Du kan tilldela int- och heltalstyper till varandra, och kompilatorn tar hand om allt annat."

"Det är väldigt bekvämt."

"Japp. Men det finns nyanser som jag ska prata om senare."