
Autor: 05.06.2023
Java - konwersja typów i rzutowanie
W tym artykule pokażemy podstawy dwóch bardzo ważnych operacji w języku Java: konwersji typów oraz rzutowania. Zaczynamy!
Jak używamy konwersji typów
Konwersja jest to przekształcenie jednego typu w inny typ. Poniższy rysunek przedstawia możliwe konwersje w języku Java. Dla ułatwienia sprawy możemy ci podpowiedzieć, że konwersja zachodzi gdy przechodzimy z typu, który zajmuje mniej pamięci operacyjnej na typ, który tej pamięci zajmuje więcej (lub zajmują tyle samo pamięci).
Proste przykłady:
byte (1 bajt) na short (2 bajty) - konwersja zachodzi
short (2 bajty) na int (4 bajty) - konwersja zachodzi

Strzałkami ciągłymi zostały oznaczone konwersje, które nie powodują utraty danych. Strzałkami przerywanymi oznaczono konwersje, które mogą powodować utratę części danych.
Przykład utraty precyzji
Duża liczba całkowita 123456789 jest zbyt duża aby zmieścić się w typie float. Po konwersji tej liczby na liczbę typu float stracimy na precyzji. Spójrz na poniższy przykład:
public class Main {
public static void main(String[] args) {
int number = 123456789;
float numberF = number;
System.out.println("number: " + number);
System.out.println("numberF: " + numberF);
}
}
Rezultat:
number: 123456789
numberF: 1.23456792E8
Kluczowe reguły konwersji
Miksowanie zmiennych o różnych typach wiąże się z pewnymi regułami, które powinieneś znać:
- jeśli któraś liczba jest typu double, druga również zostanie przekonwertowana na typ double,
- w przeciwnym wypadku, jeśli któraś liczba jest typu float, druga zostanie przekonwertowana na typ float,
- w przeciwnym wypadku, jeśli któraś liczba jest typu long, druga również zostanie przekonwertowana na typ long,
- w przeciwnym wypadku obie liczby zostaną przekonwertowane na typ int.
Przykład miksowania zmiennych typu float ze zmiennymi typu int:
public class Main {
public static void main(String[] args) {
float pi = 3.14f;
int r = 2;
float area = 2 * pi * r;
System.out.println("circle area: " + area);
}
}
Rezultat:
circle area: 12.56
Jak widzisz miksowanie typów działa, ale musisz być świadomy tego co robisz.
Jak działa rzutowanie
Konwersja zmiennej do typu int na double jest możliwa. A co by się wydarzyło gdybyśmy spróbowali to zrobić odwrotnie?. Spójrz na poniższy kod i rezultat:
public class Main {
public static void main(String[] args) {
double variableA = 10.1;
int result = variableA;
}
}
Rezultat:
incompatible types: possible lossy conversion from double to int
Pojawił się błąd czyli "niekompatybilne typy danych".
Możemy tutaj zastosować rozwiązanie siłowe czyli rzutowanie. Kompilator ostrzega o utracie danych, ale możesz się z nim nie zgodzić i dokonać rzutowania. Jak to zrobić? Aby wykonać rzutowanie wystarczy przed nazwą rzutowanej zmiennej wstawić w nawiasach nazwę typu, na jaki chcemy rzutować. Sytuacja została przedstawiona poniżej.
public class Main {
public static void main(String[] args) {
double variableA = 10.1;
int result = (int)variableA;
}
}
W wyniku rzutowania zmienna result będzie miała wartość 10 ponieważ rzutowanie liczby zmiennoprzecinkowej na całkowitą powoduje usunięcie jej części ułamkowej. Miej świadomość swoich czynów. Kompilator ostrzegał przed taką sytuacją.
Podsumowanie
Konwersja typów oraz rzutowanie to istotne operacje w języku Java. Należy jednak wykonywać je ostrożnie, ze względu na ryzyko utraty precyzji danych.
Jeśli dobrze poznać język Java i zdobyć umiejętności potrzebne do pracy na stanowisku Junior Java Developer, to zacznij naukę ze Ścieżką Kariery. Nauka kończy się egzaminem, który uprawnia cię do posługiwania się Certyfikatem Specjalisty.