– Cześć, Amigo!

– Cześć, Raszi!

– Opanowałeś już podstawy składni Java, pora więc nauczyć się o niej czegoś więcej.

– Dzisiaj przyjrzymy się typom podstawowym i temu, ile zajmują one pamięci. Ta wiedza na pewno ci się przyda, może nawet dzisiaj. Oto typy podstawowe:

Typ Rozmiar,
bajty
Zakres wartości Domyślna wartość Opis
byte 1 -128 .. 127 0 Najmniejsza liczba całkowita, 1 bajt
short 2 -32768 .. 32767 0 Krótka (ang. short) liczba całkowita, 2 bajty
int 4 -2*109 .. 2*109 0 Liczba całkowita (ang. integer), 4 bajty
long 8 -9*1018 .. 9*1018 0L Długa (ang. long) liczba całkowita, 8 bajtów
float 4 -10127 .. 10127 0.0f Liczba zmiennoprzecinkowa (ang. floating-point), 4 bajty
double 8 -101023 .. 101023 0.0d Liczba dziesiętna o dwa razy większym (ang. double) rozmiarze niż float, 8 bajtów
boolean 1 true, false false Typ boolean (tylko true albo false)
char 2 0 .. 65535 '\u0000' Znaki (ang. characters), 2 bajty, wszelkie nieoznaczone wartości
Object 4 Referencja o jakiejkolwiek wartości bądź null. null Przechowuje referencje do instancji Object bądź klas, które pochodzą od Object

– Pozwól, że przybliżę Ci wszystkie te typy.

– Typ byte jest najmniejszym typem liczby całkowitej. Zmienne tego typu zajmują tylko 1 bajt pamięci. Bajt może przechowywać wartości z zakresu od -128 do 127.

– Po co nam taki maleńki typ? Nie możemy po prostu używać typu int?

– Możemy. Ale jeśli tworzysz wielkie tablice, których elementy nigdy nie potrzebują przechowywać wartości większych niż 100, to dlaczego nie użyć typu byte? Rozumiesz już?

– Typ short jest dwa razy dłuższy niż byte i, tak jak on, przechowuje tylko liczby całkowite. Największa liczba dodatnia, jaką może przechowywać, to 32767. Natomiast największa liczba ujemna, jaką może przechowywać, to -32768.

– Mamy także typ int , który już dobrze znasz. Może on przechowywać liczby całkowite z przedziału ±2 000 000 000.

– Typ float został utworzony, aby przechowywać liczby rzeczywiste (zmiennoprzecinkowe). Zajmuje on 4 bajty.

– Liczby zmiennoprzecinkowe są przechowywane w dość specyficznej formie.

– Na przykład liczba 987654.321 może być przedstawiona jako 0.987654321*106. To oznacza, że w pamięci może być reprezentowana jako dwie liczby: 0.987654321 (mantysa lub sygnifikant) i 6 (wykładnik podstawy 10).

– Dlaczego tak jest?

– Pozwala nam to przechowywać liczby o wiele większe niż te przechowywane przez int, zużywając jednocześnie tylko 4 bajty. Nie odbywa się to jednak bez strat w dokładności. Tylko część tych bajtów jest używana do przechowywania mantysy, co oznacza, że te liczby przechowują tylko 6-7 miejsc dziesiętnych. Mniej znaczące miejsca dziesiętne zostają odrzucone.

– Te liczby nazywa się także „floating-point numbers” (ang. liczby zmiennoprzecinkowe). Od tej nazwy pochodzi właśnie nazwa typu float.

– Rozumiem.

– Typ double jest podobny do typu float, ale dwa razy dłuższy (stąd jego nazwa), zajmuje 8 bajtów pamięci. Może on pomieścić większą mantysę i więcej cyfr znaczących. Jeśli potrzebujesz przechowywać liczby rzeczywiste, to zawsze staraj się używać tego typu.

char to typ-hybryda. Wartości, które przechowuje, mogą być interpretowane zarówno jako liczby (które mogą być dodawane lub odejmowane), jak i znaki. Jest to możliwe, ponieważ pomimo, że znaki mają swoją wizualną reprezentację, to komputer odczytuje je głównie jako liczby. I traktowanie ich jako liczby jest wygodniejsze. Jeszcze jedno: typ char jest zawsze dodatni. Nie może przechowywać wartości ujemnych.

– Typ boolean to typ logiczny, który może przechowywać tylko dwie wartości: true albo false .

– Typ Object, umieszczony w tej tabeli, nie jest tak naprawdę typem prostym. Jest klasą podstawową wszystkich klas w Javie. Po pierwsze, wszystkie klasy pochodzą od niego i dlatego też zawierają jego metody. Po drugie, zmienna klasy Object może przechowywać referencje do obiektów wszystkich typów, również null (referencję o wartościnull).

– Dużo się dzisiaj nauczyłem. Dziękuję za lekcję, Raszi.