"Och nu till den mest intressanta delen. Jag ska berätta om typkonverteringar. Variabler kan inte ändra sina typer, men det finns en plats där du kan konvertera typer. Den platsen är en tilldelningsoperation. "

"Du kan tilldela variabler av olika typer till varandra. På så sätt omvandlas värdet av en variabel (av en viss typ) till ett värde av den andra typen och tilldelas den andra variabeln. "

"Vi kan peka ut två typer av omvandlingar: vidga primitiva omvandlingar och minska primitiva omvandlingar. Breddning är som att flytta saker från en liten korg till en stor. Proceduren är omärklig och smärtfri. Försmalning är analog med att ta saker ur en stor korg och lägga dem i en mindre. När du gör det här kanske du inte har tillräckligt med utrymme, du kanske måste kasta ut något. "

"Här är typerna sorterade efter deras "korg" storlek:"

Typkonvertering

"Bara ett par kommentarer:

1. Rödingens korg har samma storlek som shorts, men du kan inte flytta saker fritt från den ena till den andra. När du flyttar värden från kort till char , kommer värden som är mindre än 0 alltid att gå förlorade. När du flyttar värden från char till short, kommer värden större än 32 000 att gå förlorade.

2. När du omvandlar heltal till bråktal kan de minst signifikanta siffrorna i talet kastas ut. Detta är dock acceptabelt, eftersom syftet med ett bråktal är att lagra ett ungefärligt värde."

" När vi utför avsmalnande konverteringar måste vi uttryckligen tala om för kompilatorn att vi inte har gjort något fel: vi kasserar en del av numret med avsikt. Vi använder en cast-operator ( dvs. typnamnet inom parentes) för att göra detta."

"Så här ska du tilldela variabler av olika typer:"

Java-kod Beskrivning
byte a = 115;
int b = a;
Vidgar primitiv omvandling. Allt är bra.
int c = 10000;
byte d = (byte) c;
Begränsande primitiv omvandling . Vi måste uttryckligen ange att de extra byten ska kasseras.
int c = 10;
byte d = (byte) c;
Begränsande primitiv omvandling. Vi måste uttryckligen ange att de extra byten ska kasseras, även om de är lika med 0.
float f = 10000;
long l = (long) (f * f);
float f2 = l;
long l2 = (long) f2;
Vid tilldelning till en flöte sker en breddad primitiv omvandling. När man tilldelar en float till en lång, sker en avsmalnande primitiv omvandling. En gjuten operatör krävs.
double d = 1;
float f = (float) d;
long l = (long) f;
int i = (int) l;
short s = (short) i;
byte b = (byte) s;
Begränsar konverteringar i alla tilldelningsoperationer utom första raden. Dessa konverteringar kräver att vi uttryckligen anger typkonverteringen.
3
Uppgift
Java Syntax,  nivålektion
Låst
Code entry
Sometimes you don't need to think, you just need to hammer it out! As paradoxical as it may seem, sometimes your fingers will "remember" better than your conscious mind. That's why while training at the secret CodeGym center you will sometimes encounter tasks that require you to enter code. By entering code, you get used to the syntax and earn a little dark matter. What's more, you combat laziness.

" En cast-operator måste sättas före ett nummer/variabel när som helst en del av numret kommer att kasseras eller när en avsmalnande primitiv konvertering inträffar. Cast-operatorn påverkar bara numret/variabeln som direkt följer den."

Java-kod Beskrivning
float f = 10000;
long l = (long) f * f;
Endast en av de två variablerna kastas till en lång: multiplikation av en lång och en flöte är lika med en float.
float f = 10000;
long l = (long) (f * f);
Hela uttrycket är gjutet till en lång.

"Jag förstår."