W Javie można rozróżnić kilka typów prymitywnych. Każdy z tych typów charakteryzuje się pewnymi właściwościami, które można zobaczyć w poniższej tabeli. Należny pamiętać, że typy prymitywne są takie same w każdej implementacji Javy, nieżalenie od sprzętu na którym działa. Małe podsumowanie:
Nazwa | Rozmiar w bitach |
Minimalna wielkość |
Maksymalna wielkość |
Klasa wrappera |
byte | 8 | -128 | 127 | Byte |
char | 16 | 0 | 216-1 | Character |
short | 16 | -215 | 215-1 | Short |
int | 32 | -231 | 231-1 | Integer |
long | 64 | -263 | 263-1 | Long |
Nazwa | Rozmiar w bitach |
Minimalna liczba |
Maksymalna liczba |
Klasa wrappera |
float | 32 | 1.4e-45 | 3.4028235e+38 | Float |
double | 64 | 4.9e-324 | 1.797e+308 | Double |
boolean | 1 | Boolean | ||
void | Void |
Możemy rozróżnić dwa typy konwersji: rozszerzającą i zawężającą. Konwersja rozszerzająca ma miejsce wtedy, gdy rzutujemy daną wartość na typ o szerszym zakresie danych. Odbywa się ona automatycznie w razie potrzeby. Zgodnie z poniższą konwencją:
W przypadku typu char
następuje rzutowanie do typu int
, pomimo tego że typ short
ma taką samą wielkość. Jest spowodowane tym, że typ char
jako jedyne nie pozwala na zapisanie liczb ujemnych, i tym samym reprezentuje większy zakres liczb.
Podczas konwersji z typu long
do typu float
może mieć miejsce utrata danych.
Natomiast konwersja zawężająca ma miejsce wtedy, gdy podczas konwersji możemy część danych lub też precyzje obliczeń.
Konwersje zawężające zwykle wymagają odpowiedniego rzutowania. Jeżeli ma miejsce rzutowanie to niezależnie od tego czy tracimy jakieś informacje czy też dane ulegną niespodziewanej zmianie to kompilator nigdy nie wyrzuci żadnego wyjątku w trakcie działania aplikacji. Konwersja zostanie dokonana bez zgłaszania błędów.