„А сега най-интересната част. Ще ви разкажа за преобразуването на типове. Променливите не могат да променят типовете си, но има място, където можете да преобразувате типове. Това място е операция за присвояване. “
"Можете да присвоявате променливи от различни типове една на друга. При това стойността на една променлива (от определен тип) се преобразува в стойност от другия тип и се присвоява на другата променлива. "
„Можем да посочим два вида преобразувания: разширяване на примитивни преобразувания и стесняване на примитивни преобразувания. Разширяването е като преместване на неща от малка кошница в голяма. Процедурата е незабележима и безболезнена. Стесняването е аналогично на изваждането на неща от голяма кошница и ги поставяте в по-малък. Когато направите това, може да нямате достатъчно място; може да се наложи да изхвърлите нещо. "
„Ето видовете, сортирани според размера на „кошницата“ им:“
„Само няколко коментара:
1. Кошницата на char е със същия размер като на short, но не можете да местите нещата свободно от едната в другата. Когато преместите стойности от short към char , стойностите, които са по-малки от 0, винаги ще бъдат загубени. Когато преместите стойности от char към short, стойности, по-големи от 32 000, ще бъдат загубени.
2. Когато преобразувате цели числа в дробни числа, най-малко значимите цифри от числото може да бъдат изхвърлени. Това обаче е приемливо, тъй като целта на дробното число е да съхранява приблизителна стойност."
" Когато извършваме стесняващи преобразувания, трябва изрично да кажем на компилатора, че не сме направor грешка: ние изхвърляме част от числото нарочно. Ние използваме оператор за преобразуване ( т.е. името на типа в скоби ), за да направим това."
"Ето How трябва да присвоявате променливи от различни типове:"
Java code | Описание |
---|---|
|
Разширено примитивно преобразуване. всичко е страхотно |
|
Стесняващо примитивно преобразуване . Трябва изрично да посочим, че допълнителните byteове трябва да бъдат изхвърлени. |
|
Стесняващо примитивно преобразуване. Трябва изрично да посочим, че допълнителните byteове трябва да бъдат изхвърлени, дори ако са равни на 0. |
|
Когато се присвоява на float, се извършва разширяващо се примитивно преобразуване. Когато се присвоява float на long, се извършва стесняващо примитивно преобразуване. Изисква се каст оператор. |
|
Стесняване на преобразувания във всички операции за присвояване, с изключение на първия ред. Тези преобразувания изискват изрично да посочим преобразуването на типа. |
" Операторът за преобразуване трябва да бъде поставен преди число/променлива по всяко време, когато част от числото ще бъде отхвърлена or когато настъпи стесняващо примитивно преобразуване. Операторът за преобразуване засяга само числото/променливата, които го следват директно."
Java code | Описание |
---|---|
|
Само една от двете променливи се прехвърля към long: умножението на long и float е равно на float. |
|
Целият израз е преобразуван в дълго. |
"Виждам."
GO TO FULL VERSION