„А сега най-интересната част. Ще ви разкажа за преобразуването на типове. Променливите не могат да променят типовете си, но има място, където можете да преобразувате типове. Това място е операция за присвояване.

"Можете да присвоявате променливи от различни типове една на друга. При това стойността на една променлива (от определен тип) се преобразува в стойност от другия тип и се присвоява на другата променлива. "

„Можем да посочим два вида преобразувания: разширяване на примитивни преобразувания и стесняване на примитивни преобразувания. Разширяването е като преместване на неща от малка кошница в голяма. Процедурата е незабележима и безболезнена. Стесняването е аналогично на изваждането на неща от голяма кошница и ги поставяте в по-малък. Когато направите това, може да нямате достатъчно място; може да се наложи да изхвърлите нещо. "

„Ето видовете, сортирани според размера на „кошницата“ им:“

Преобразуване на типа

„Само няколко коментара:

1. Кошницата на char е със същия размер като на short, но не можете да местите нещата свободно от едната в другата. Когато преместите стойности от short към char , стойностите, които са по-малки от 0, винаги ще бъдат загубени. Когато преместите стойности от char към short, стойности, по-големи от 32 000, ще бъдат загубени.

2. Когато преобразувате цели числа в дробни числа, най-малко значимите цифри от числото може да бъдат изхвърлени. Това обаче е приемливо, тъй като целта на дробното число е да съхранява приблизителна стойност."

" Когато извършваме стесняващи преобразувания, трябва изрично да кажем на компилатора, че не сме направor грешка: ние изхвърляме част от числото нарочно. Ние използваме оператор за преобразуване ( т.е. името на типа в скоби ), за да направим това."

"Ето How трябва да присвоявате променливи от различни типове:"

Java code Описание
byte a = 115;
int b = a;
Разширено примитивно преобразуване. всичко е страхотно
int c = 10000;
byte d = (byte) c;
Стесняващо примитивно преобразуване . Трябва изрично да посочим, че допълнителните byteове трябва да бъдат изхвърлени.
int c = 10;
byte d = (byte) c;
Стесняващо примитивно преобразуване. Трябва изрично да посочим, че допълнителните byteове трябва да бъдат изхвърлени, дори ако са равни на 0.
float f = 10000;
long l = (long) (f * f);
float f2 = l;
long l2 = (long) f2;
Когато се присвоява на float, се извършва разширяващо се примитивно преобразуване. Когато се присвоява float на long, се извършва стесняващо примитивно преобразуване. Изисква се каст оператор.
double d = 1;
float f = (float) d;
long l = (long) f;
int i = (int) l;
short s = (short) i;
byte b = (byte) s;
Стесняване на преобразувания във всички операции за присвояване, с изключение на първия ред. Тези преобразувания изискват изрично да посочим преобразуването на типа.
3
Задача
Java Syntax,  нивоурок
Заключено
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.

" Операторът за преобразуване трябва да бъде поставен преди число/променлива по всяко време, когато част от числото ще бъде отхвърлена or когато настъпи стесняващо примитивно преобразуване. Операторът за преобразуване засяга само числото/променливата, които го следват директно."

Java code Описание
float f = 10000;
long l = (long) f * f;
Само една от двете променливи се прехвърля към long: умножението на long и float е равно на float.
float f = 10000;
long l = (long) (f * f);
Целият израз е преобразуван в дълго.

"Виждам."