Pamiętasz materiał dotyczący typów danych w języku Java znajdujący się tutaj? Dzisiaj sobie rozszerzymy ten wątek uzupełniając go o informacje na czym polega konwersja typów danych w języku Java. Tak, można sobie wymieniać jeden typ na drugi, tylko trzeba to robić z głową i wymagać od siebie logicznego rozumowania 😉. Więcej w środku.
KONWERSJA TYPÓW DANYCH W JĘZYKU JAVA TO "RYZYKOWNA GRA"
Jak wspomniałem to jest operacja, która oczekuje od nas zdroworozsądkowego podejścia. A co za tym idzie, może zgłosić wyjątek jeżeli spróbujemy wykonać konwersję bez sensu, natomiast w tym wypadku Java nie będzie od Ciebie oczekiwać bloku "try-catch" (wyjątek należy do klasy "RuntimeException", która nie oczekuje definiowania bloków dla instrukcji ryzykownych!). Tak się zakończy choćby próba przerobienia liczby całkowitej na obiekt klasy. W jaki sposób program ma to przerobić? Może Ty wiesz jakiego wyniku się spodziewać 😂?
OD KUCHNI, A RACZEJ OD KODU 🙂
Z punktu widzenia kodu źródłowego, wszystko sprowadza się do wywołania metody, która ma w nazwie hasło "parse". "Parsowaniem" określamy operację wydobycia danych z łańcucha znaków. Prosty przykład na początek, parsowanie na liczbę całkowitą:
int i = Integer.parseInt("33");
"parseInt" (tak zresztą jak reszta metod dla każdego typu danych) jest metodą statyczną, co oznacza że nie potrzebujemy tworzyć żadnych obiektów typu "Integer". Zwracam na to szczególną uwagę, ponieważ Java nie wspiera tych metod z poziomu zmiennej:
i.parseInt("33"); // błąd kompilacji
GOTOWY(-A) NA WYJĄTKOWE SYTUACJE
Gdybyś chciał(a) się zabezpieczyć i zrobić cokolwiek w przypadku niepowodzenia, możesz otoczyć instrukcję blokiem "try-catch" i wstawić typ "NumberFormatException" - to jest rodzaj wyjątku zgłaszanego przez metody parsujące:
try {
int i = Integer.parseInt("33");
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
}
"NumberFormatException" dziedziczy po "RuntimeException", a wszystkie wyjątki tego typu (zgodnie z dziedziczeniem) nie wymagają bloku "try-catch".
LISTA NA KAŻDY TYP DANYCH
Zakończmy sobie ten materiał krótkim zestawieniem w tabelce jak wygląda konwersja typów danych w języku Java jako wywoływanie tej samej metody dla każdego typu z osobna:
NAZWA | ZNACZENIE |
Byte.parseByte | konwersja na typ "byte" |
Short.parseShort | konwersja na typ "short" |
Integer.parseInt | konwersja na typ "int" |
Long.parseLong | konwersja na typ "long" |
Float.parseFloat | konwersja na typ "float" |
Double.parseDouble | konwersja na typ "double" |
Boolean.parseBoolean | konwersja na typ "boolean" |
Oczywiście każda z tych metod będzie na wejściu oczekiwać zawsze łańcucha znaków (typ "String"), lecz musi on być "dopasowany" pod każdy typ np. "parseBoolean" żeby odczytać wartość logiczną ("true" albo "false"), musi na wejściu otrzymać łańcuch znaków składający się dokładnie z tych samych znaków 💪.
Konwersja typów danych w języku Java polega na wywołaniu statycznej metody z hasłem "parse" posługując się właściwym typem danych. Nie zawsze ta operacja może się powieść, zatem jest ryzyko zgłoszenia wyjątku!
Skromnie od siebie dodam, że to nie jest jedyna droga przerabiania wartości na inny typ 🙂. Mamy też metodę "valueOf", którą wywołujemy tak samo jak "parse". Bardzo się przydaje w sytuacji, gdybyśmy chcieli przerobić sobie liczbę na łańcuch znaków, czyli w drugą stronę 😊!
Tak się kończy kolejny krótki materiał o temacie dot. programowania w Javie 🏁!