– Cześć, Amigo!

– Cześć, Basiu!

– Mam dzisiaj świetny nastrój, więc opowiem Ci coś fajnego. Zacznę od tego, jak system typów w Javie radzi sobie z typami prostymi.

– W Javie każdy obiekt i każda zmienna mają swój własny, domyślnie ustawiony, niezmienny typ. Typ prosty zmiennej jest określany, kiedy program jest kompilowany, a typ obiektu wtedy, kiedy się ten obiekt tworzy. Typ nowo utworzonego obiektu i/lub zmiennej pozostaje niezmienny przez cały czas ich życia. Oto przykład:

Kod Java Opis
int a = 11;
int b = 5;
int c = a / b; // c == 2
a / b – przedstawia dzielenie liczb całkowitych. Wynik to dwa. Reszta z dzielenia jest ignorowana.
int a = 13;
int b = 5;
int d = a % b; // d == 3
d będzie przechowywać resztę z dzielenia liczb całkowitych a przez b. Reszta to 3.

– Musisz jednak pamiętać o kilku ważnych aspektach.

– Po pierwsze, zmienna referencyjna nie zawsze wskazuje wartość, która jest tego samego typu, co ona sama.

– Po drugie, jeśli oddziaływają na siebie zmienne dwóch różnych typów, muszą one wpierw zostać skonwertowane do tego samego typu.

– A co z dzieleniem? Jeśli podzielimy 1 przez 3, otrzymamy wynik: 0.333(3). Tak?

– Nie, to nie jest prawidłowy wynik. Jeśli dzielimy przez siebie dwie liczby całkowite, wynik także jest liczbą całkowitą. Jeśli podzielisz 5 przez 3, wynikiem będzie 1 i dwa jako reszta. Reszta zostanie pominięta.

– Jeśli podzielimy 1 przez 3, otrzymamy 0 (oraz resztę 1, którą pomijamy).

– Ale co zrobić, jeśli chcemy otrzymać 0.333?

– Przed przeprowadzeniem dzielenia w Javie najlepiej jest zamienić liczbę na liczbę typu zmiennoprzecinkowego (dziesiętnego), mnożąc ją przez zmiennoprzecinkową liczbę jeden (1.0).

Kod Java Opis
int a = 1/3;
a wynosi 0
double d = 1/3;
 d wynosi 0.0
double d = 1.0 / 3;
d wynosi 0.333(3)
double d = 1 / 3.0;
d wynosi 0.333(3)
int a = 5, b = 7;
double d = (a * 1.0) / b;
d wynosi 0.7142857142857143

– Kumam.