Jason. Cała informatyka w jednym miejscu!

W dzisiejszym materiale przybliżę Ci szczegóły jak wykonać rzutowanie typu w języku Java i co to za wynalazek 😉. Nie jest to może coś hiper, co trzeba koniecznie znać, żeby swobodnie poruszać się po kodzie, aczkolwiek mogą pojawić się sytuacje, w których to Ci się przyda. Nie czekaj, tylko właź do środka, a wszystko Ci wytłumaczę za friko 😄!

DLACZEGO MIAŁOBY MNIE OBCHODZIĆ RZUTOWANIE TYPU W JĘZYKU JAVA?!

Operacja rzutowania typu danych oznacza prostymi słowy wymuszenie zmiany typu wskazanej zmiennej, jakby nie była tego typu jaki faktycznie reprezentuje. Chodzi o możliwość skonwertowania typu danych zmiennej na inny. Na przykład jesteśmy w stanie przekonwertować liczbę całkowitą na liczbę zmiennoprzecinkową przy czym należy zachować ostrożność, bo kompilator nam przerwie program, gdy próba konwersji okaże się absurdalna (tak naprawdę zgłosi wyjątek o niekompatybilności typów). Zaraz Wam wyjaśnię co mam na myśli, tylko skupmy się wpierw na tym, jak przeprowadzić takie rzutowanie w kodzie źródłowym.

RZUTOWANIE OD...KODU

Rzutowanie wykonujemy bardzo prosto. Po zdefiniowaniu sobie zmiennej np. typu "float":

float f = 9.5f;

możemy sobie rzutować na typ "int", na liczbę całkowitą w taki oto sposób:

int i = (int)f;

Ten fragment kodu:

(int)

to rzutowanie typu w języku Java. Wewnątrz obowiązkowych nawiasów okrągłych, wpisujemy typ danych jaki nas interesuje. W ten sposób uda Ci się zaokrąglić liczbę z ułamkiem, natomiast uważaj! Rzutowanie z liczby zmiennoprzecinkowej na całkowitą nie powoduje zaokrąglenia, tylko "obcięcia" części ułamkowej, czyli zawsze zaokrągli w dół! Dlatego zmienna "i" przyjmie wartość nie 10, a 9. Jeśli Ciebie interesuje takie "prawdziwe" zaokrąglanie, to należy użyć do tego metod matematycznych np. "Math.round". Odniosę się do tego w innym artykule, bo to nie jest miejsce na przedstawienie metod matematycznych.

CZY TO JEST W OGÓLE POTRZEBNE?

Tak, jest potrzebne bo język Java podchodzi rygorystycznie do zgodności typów danych. Więcej informacji znajdziesz pod hasłem "silna typizacja" bądź "silne typowanie".

KIEDY (NIE) MOŻEMY Z TEGO SKORZYSTAĆ?

Możemy, jeśli robimy to z głową. Nie powinniśmy, jeśli wyjdą same bzdury. Ciężko sobie wyobrazić jak by wyglądała wartość łańcucha znaków, gdyby został przekonwertowany na liczbę całkowitą 🤦‍♂️. Więc kiedy rzutowanie typu w języku Java jest zasadne 🤔?

Jeden z przypadków macie u góry - konwersja liczby zmiennoprzecinkowej na całkowitą jest jak najbardziej w porządku. Wiemy czego się spodziewać - tej samej liczby, tylko bez ułamka 🙂. Drugi przykład poprawnego użycia to polimorficzne przypisanie obiektu klasy potomnej do zmiennej typu klasy bazowej:

Wolf wolf = new Wolf();
Animal animal = (Animal)wolf;

Pójdzie bez problemu, o ile "Animal" jest klasą bazową klasy "Wolf". Temat dziedziczenia jeszcze nie został poruszony, także nie przejmuj się tym zapisem. Chciałem tylko pokazać gdzie jeszcze rzutowanie w języku Java może okazać się przydatne 👍.

RZUTOWANIE NIEJAWNE

Do tej pory mówiliśmy sobie o jawnym rzutowaniu typu, natomiast możecie mieć do czynienia z sytuacjami "tajnego" rzutowania przez kompilator 😨. Kiedy coś takiego może wystąpić?

Przypadkiem charakterystycznym (jeśli nie jedynym) jest polimorfizm w kontekście przekazywania parametru do wywoływanej funkcji, czyli skorzystanie z obiektu klasy potomnej:

Wolf wolf = new Wolf();

i "włożenie" go do wywołania funkcji:

doSomething(wolf);

a ona oczekuje parametru typu klasy bazowej:

public void doSomething(Animal animal) {
	// instrukcje
}

Wtedy nie trzeba rzutować samemu, kompilator zrobi to za Ciebie! Funkcje zostaną poruszone w osobnym artykule.

Rzutowanie typu w języku Java

Rzutowanie typu w języku Java "wymusza" na kompilatorze traktowania zmiennej jako innego typu danych.


"The end" 😛. Wiemy już czym jest rzutowanie oraz kiedy możemy z niego skorzystać i do jakich celów.

NASTĘPNY ARTYKUŁ: Instrukcja warunkowa w języku Java i operator warunkowy

PODOBNE ARTYKUŁY