– A teraz ta najbardziej interesująca część. Opowiem Ci o konwersji typu. Typów zmiennych nie można zmieniać, ale istnieje sposób, dzięki któremu możesz je konwertować. Ten sposób nazywa się operacją przypisania.
– Możesz przypisywać zmienne różnych typów do siebie nawzajem. W ten sposób wartość jednej zmiennej (jakiegoś konkretnego typu) zostaje przekonwertowana na wartość innego typu i przypisana do innej zmiennej.
– Możemy wyszczególnić dwa rodzaje konwersji: konwersja rozszerzająca typów prostych i konwersja zawężająca typów prostych. Rozszerzanie jest jak przenoszenie rzeczy z małego koszyka do dużego. To niczym niewyróżniająca się i bezbolesna procedura. Zawężanie jest czynnością analogiczną do wyjmowania rzeczy z dużego kosza i przenoszenia ich do mniejszego. Kiedy to robisz, może zabraknąć Ci miejsca; być może trzeba będzie coś wyrzucić.
– Oto typy posortowane zgodnie z rozmiarem ich „kosza”:

– Musisz pamiętać o kilku rzeczach:
1. Kosz na typy char jest tego samego rozmiaru co na typy short, ale nie można swobodnie przenosić rzeczy z jednego do drugiego kosza. Kiedy przenosisz wartości z short do char, wartości mniejsze niż 0 zawsze zostaną utracone. Kiedy przenosisz wartości z char do short, utracone zostaną wartości większe niż 32000.
2. Kiedy zamieniasz liczby całkowite na zmiennoprzecinkowe, to wyrzucone mogą zostać z liczby cyfry najmniej istotne. Można to jednak zaakceptować, ponieważ celem liczby zmiennoprzecinkowej jest przechowywanie tylko przybliżonej wartości.
– Podczas przeprowadzania konwersji zawężającej musimy wyraźnie wskazać kompilatorowi, że nie popełniliśmy błędu i odrzucamy część liczby celowo. Aby to zrobić, używamy operatora rzutowania (tj. nazwy typu w nawiasach).
– Zmienne różnych typów należy przypisywać w następujący sposób:
Kod Java | Opis |
---|---|
|
Konwersja rozszerzająca typów prostych. Wszystko się zgadza. |
|
Konwersja zawężająca typów prostych. Musimy wyraźnie zaznaczyć, że dodatkowe bajty muszą zostać odrzucone. |
|
Konwersja zawężająca typów prostych. Musimy wyraźnie zaznaczyć, że dodatkowe bajty muszą zostać odrzucone, nawet jeśli są one równe 0. |
|
Podczas przypisywania do typu float zachodzi rozszerzająca konwersja typów prostych. Podczas przypisywania float do typu long zachodzi zawężająca konwersja typów prostych. Wymagany jest operator rzutowania. |
|
We wszystkich operacjach przypisania oprócz pierwszej linii zachodzi konwersja zawężająca. Ta konwersja wymaga, żebyśmy dokładnie wskazali konkretną konwersję typu. |
– Operator rzutowania musi zostać postawiony przed liczbą/zmienną za każdym razem, gdy ma zostać odrzucona część liczby lub kiedy zachodzi konwersja zawężająca typów prostych. Operator rzutowania oddziałuje tylko na liczbę/zmienną, która następuje po nim.
Kod Java | Opis |
---|---|
|
Tylko jedna bądź dwie zmienne są rzutowane do typu long: mnożenie typu long przez float jest równe float. |
|
Całe wyrażenie jest rzutowane do typu long. |
– Rozumiem.
GO TO FULL VERSION