Typy prymitywne a opakowujące
Integer, Double, Boolean i inne
Typy prymitywne a opakowujące to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.
Dwa światy wartości
Java ma typy proste, takie jak int, double i boolean, które przechowują bezpośrednio surowe wartości. Ma również klasy opakowujące, takie jak Integer, Double i Boolean, które umieszczają te wartości wewnątrz obiektów.
Typy proste są szybkie i lekkie. Klasy opakowujące są pełnoprawnymi obiektami, które mogą znajdować się w kolekcjach i mogą mieć wartość null.
Osiem typów prostych
Java definiuje dokładnie osiem typów prostych:
byte,short,int,longdla liczb całkowitychfloat,doubledla liczb dziesiętnychchardla pojedynczego znakubooleandla wartości prawda/fałsz
Każdy z nich ma odpowiadającą mu klasę opakowującą w pakiecie java.lang.
Odpowiadające nazwy klas opakowujących
W większości przypadków nazwę klasy opakowującej tworzy się przez zapisanie nazwy typu prostego z wielką literą na początku, ale dwa przypadki są inne:
intstaje się klasą Integercharstaje się klasą Characterbooleanstaje się klasą Boolean,doublestaje się klasą Double itd.
Wypiszmy kilka klas opakowujących.
public class Main {
public static void main(String[] args) {
Integer count = 42;
Double price = 9.99;
Boolean active = true;
Character grade = 'A';
System.out.println(count);
System.out.println(price);
System.out.println(active);
System.out.println(grade);
}
}Klasy opakowujące są obiektami
Typ prosty przechowuje wartość. Klasa opakowująca jest referencją do obiektu, więc może nie wskazywać na nic i mieć wartość null.
Dzięki temu klasy opakowujące są przydatne, gdy wartość może być nieobecna, na przykład w przypadku kolumny bazy danych, która dopuszcza wartość NULL.
public class Main {
public static void main(String[] args) {
Integer missing = null;
int present = 5;
System.out.println(missing);
System.out.println(present);
}
}Przydatne stałe
Klasy opakowujące udostępniają przydatne stałe. Integer.MAX_VALUE i Integer.MIN_VALUE oznaczają odpowiednio największą i najmniejszą wartość typu int.
To znacznie łatwiejsze niż samodzielne zapamiętywanie tych liczb.
public class Main {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
}
}Metody pomocnicze
Klasy opakowujące są również zbiorami statycznych metod pomocniczych. Na przykład Integer.toBinaryString przedstawia liczbę w systemie dwójkowym, a Integer.max zwraca większą z dwóch wartości.
public class Main {
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(10));
System.out.println(Integer.max(7, 3));
System.out.println(Integer.toHexString(255));
}
}Dlaczego kolekcje potrzebują klas opakowujących
Generyki w Javie działają wyłącznie z obiektami, a nie z typami prostymi. Nie można zapisać List<int>.
Zamiast tego należy użyć List<Integer>. Klasa opakowująca pozwala umieścić wartość typu prostego w świecie obiektów wymaganym przez kolekcje.
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(20);
System.out.println(numbers);
}
}Porównywanie wartości klas opakowujących
Aby porównać wartość liczbową znajdującą się w dwóch klasach opakowujących, proszę użyć .equals() lub .compareTo(), a nie operatorów arytmetycznych bezpośrednio na tych obiektach.
compareTo zwraca liczbę ujemną, zero albo liczbę dodatnią.
public class Main {
public static void main(String[] args) {
Integer a = 100;
Integer b = 200;
System.out.println(a.equals(b));
System.out.println(a.compareTo(b));
}
}Pamięć i wydajność
Typy proste zużywają mniej pamięci i działają szybciej, ponieważ nie mają narzutu związanego z obiektem. Pojedynczy int to zaledwie 4 bajty surowych danych.
Obiekt klasy opakowującej zawiera dodatkowe informacje w nagłówku. W przypadku ciasnych pętli przetwarzających miliony wartości proszę wybierać typy proste.
Różne wartości domyślne
Niezainicjalizowane pole typu prostego otrzymuje domyślnie wartość podobną do zera: int ma wartość 0, a boolean ma wartość false.
Niezainicjalizowane pole typu opakowującego otrzymuje domyślnie wartość null. Ta różnica ma znaczenie, gdy później próbują Państwo użyć tej wartości.
public class Main {
static int primitiveField;
static Integer wrapperField;
public static void main(String[] args) {
System.out.println(primitiveField);
System.out.println(wrapperField);
}
}Wybór między nimi
Prosta zasada: ze względu na wydajność i czytelność należy domyślnie używać typów prostych. Na klasę opakowującą proszę przechodzić, gdy potrzebny jest element kolekcji, typ generyczny albo możliwość oznaczenia braku wartości za pomocą null.
Szybkie sprawdzenie
Proszę sprawdzić swoją wiedzę o typach prostych i klasach opakowujących.
Podsumowanie
Poznali Państwo różnicę między typami prostymi a klasami opakowującymi:
- Osiem typów prostych odpowiada ośmiu klasom opakowującym, takim jak
IntegeriDouble - Klasy opakowujące są obiektami, mogą mieć wartość
nulli pasują do kolekcji - Typy proste są szybsze i lżejsze, dlatego należy używać ich domyślnie
- Klasy opakowujące udostępniają również przydatne stałe i metody pomocnicze
Często zadawane pytania
Czy lekcja „Typy prymitywne a opakowujące” jest bezpłatna?
Tak — pełny tekst „Typy prymitywne a opakowujące” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Typy prymitywne a opakowujące”?
Integer, Double, Boolean i inne Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Java Academy?
Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Typy prymitywne a opakowujące”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?
Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Typy prymitywne a opakowujące
- Autoboxing i unboxing
- Parsowanie i valueOf
- Pułapki autoboxingu