Konwersja i rzutowanie typów | Kurs Java

Konwersja i rzutowanie typów

Konwersja typu (type conversion)

Konwersja typu – jest to inaczej mówiąc zmiana, przekształcenie jednego typu w drugi. Dzięki niej jeden typ danych, np. liczba całkowita, jeżeli zajdzie taka potrzeba, może zostać potraktowany jako inny typ, np. liczba zmiennoprzecinkowa.

Na poniższym przykładzie widać, jak dzieląc liczbę typu int na liczbę typu int, otrzymujemy wynik również w typie int. Jednak możemy go przypisać do typu double, dzięki niejawnej konwersji z typu int do double.

Taka konwersja może nastąpić tylko z typu węższego, do szerszego, czy np. z int do long, z long do double itp., nigdy odwrotnie.

Jeżeli będziemy chcieli zrobić konwersję w dół, czyli np. z double do int, kompilator zaprotestuje błędem kompilacji: incompatible types: possible lossy conversion from double to int.

Rzutowania typu (typecasting)

Czasami zachodzi potrzeba wymuszenia jawnie konwersji, czyli rzutowania typów. Możemy wymusić konwersję jednego typu na drugi, wykorzystując do tego konstrukcję z nawiasami okrągłymi i typem:

([nazwa typu)[zmienna]

Należy jednak być bardzo ostrożnym przy korzystaniu z tej konstrukcji, ponieważ nakazujemy wtedy kompilatorowi zmianę typu. Jeżeli taka zmiana nie będzie możliwa, możemy otrzymać wyjątek podczas działania aplikacji lub stracimy część precyzji przechowywanych danych.

  1. value3 = 0.0
    Ponieważ najpierw podzielono 3 na 10 bez reszty, otrzymując typ int i dopiero wtedy wynik został poddany niejawnej konwersji do typu double.
  2. value4 = 0.3
    Ponieważ w wyniku dzielenia typu int przez typ double otrzymujemy wynik w postaci double.
  3. value5 =1
    Ponieważ podczas rzutowania typu z double do int utracono część ułamkową.

Programista – Pytania rekrutacyjne

Lista pytań rekrutacyjnych, które pozwolą przygotować Ci się na rozmowę kwalifikacyjną.

1 Comment
Share:

1 Comment

  1. Eoven says:

    Można w tym miejscu coś też wspomnieć o “promowaniu typów” w Javie:
    1. Jeśli dwie wartości mają różne typy Java promuje jedną wartość do wyższego typu.
    2. Np. że przy dodawaniu stałej (int) na zm. przecinkową (float) Java automatycznie promuje całkowitą do zm przecinkowej i wynik jest zm przecinkowy.
    3. Małe typy jak byte, short, char są promowane do int za każdym razem gdy są używane z operatorem arytmetycznym.
    4. Dopiero po promocji i gdy operandy mają ten sam typ zwracana wartość będzie miała ten sam typ co operandy.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *