W większości przypadków używamy prymitywnych typów danych podczas pisania programu w dowolnym języku. Ale są sytuacje, w których prymitywne typy danych nie spełniają wymagań i jest jednym z nich. Aby przezwyciężyć wady pierwotnych typów danych, używamy opakowania . Ta procedura nazywa się Autoboxing. Omówimy szczegółowe Autoboxing w Javie za pomocą poniższego dokumentu:
Zaczynajmy.
Co to jest boks i autoboxing w Javie?
Boks i Autoboxing są często używane w odniesieniu do tej samej koncepcji. Ale w rzeczywistości nie są dokładnie takie same. Porozmawiajmy najpierw o koncepcji boksu. Co to jest boks? Wygląda na to, że trzymamy coś w pudełku, prawda? Tak, kiedy mówimy, że pakujemy lub zawijamy prymitywny typ danych, oznacza to, że opakowujemy go, aby utworzyć obiekt. Wciąż zdezorientowany? Weźmy przykład.
int FirstNumber = 1
Zmienna „FirstNumber” jest typu int, czyli a . A co jeśli chcę przekonwertować zmienną „FirstNumber” na obiekt? Java umożliwia to.
Integer SecondNumber = nowa Integer (2)
Zauważ, że „SecondNumber” nie jest typu int, ale jest obiektem typu Integer. Ten proces przekształcania pierwotnych typów danych w obiekt nazywa się boksowaniem. Możesz zapytać, jak to możliwe? Zastanówmy się, jaki jest najprostszy sposób wykonania tego zadania. Możemy stworzyć klasa zawierający pojedynczy atrybut typu int, konstruktor, który przyjmuje wartość typu int i przypisuje ją do naszego atrybutu klasy, oraz niektóre metody do manipulowania tą wartością int. Aby dowiedzieć się więcej na ten temat, zapoznaj się z tym dokument .
Widzieliśmy, jak typ int można przekształcić w Javę. Czy istnieje sposób na przekształcenie innych pierwotnych typów danych w obiekty? Tak, Java ma odpowiednie klasa opakowania dla różnych pierwotnych typów danych. Przyjrzymy się im w następnej sekcji tego wpisu.
Autoboxing
W tym momencie wiemy, czym jest boks. Teraz zrozumiemy, czym jest Autoboxing. kiedy proces pakowania jest wykonywany przez kompilator bez wyraźnej wzmianki, nazywa się autoboxing.
Zrozummy to na przykładzie:
import java.util.ArrayList import java.util.Listclass Box {public static void main (String [] args) {List Mylist = new ArrayList () for (int i = 0 i<10 i++) Mylist.add(i) } }
Jak omówiliśmy wcześniej akceptuje tylko obiekty, a prymitywne typy danych nie działają. W powyższym programie nie dokonaliśmy konwersji typu na obiekty typu Integer, ale program wykonuje się bez żadnego błędu. W jaki sposób? Odpowiedź na to pytanie brzmi: kompilator automatycznie przeprowadził proces pakowania przed dodaniem wartości do „Mylist”, stąd nazwa Autoboxing.
Przykładowy kod Pythona regresji logistycznej
Mylist.add (Integer.valueOf (i))
Powyższy wiersz kodu jest dodawany do naszego programu przez kompilator.
Uwaga- W powyższym wierszu klasy kodu nazwa „Integer” jest wymieniona przed metodą valueOf (), ponieważ valueOf () jest metodą statyczną. Więcej przykładów można znaleźć w dokumenty .
Unboxing i Autounboxing
Widzieliśmy jak pierwotnego typu danych są konwertowane na obiekty. Ale to tylko połowa historii. Druga część historii to konwersja obiektu klasy opakowującej typu na jego pierwotny typ danych rozpakowywanie .
Na przykład-
Integer FirstNumber = new Integer (1) int SecondNumber = FirstNumber.intValue () System.out.println (SecondNumber)
Wyjście - 1
Autounboxing Gdy proces rozpakowywania dokonany przez kompilator bez wyraźnej wzmianki nazywa się Autounboxing.
Na przykład-
Integer Number = new Integer (20) int num = Number
Powyższy kod jest przykładem Autounboxingu. W następnej sekcji dowiemy się o klasach opakowujących.
Klasy opakowujące
Przekonwertowaliśmy na obiekt typu zmienna typu intl Integer. Ta klasa liczb całkowitych jest klasą opakowania. W Javie dostępna jest klasa opakowująca dla każdego . Te klasy opakowania pomagają nam w konwersji zmiennej z typu pierwotnego na odpowiedni obiekt typu klasy opakowania. Metody klas opakowujących są przydatne w manipulowaniu wartościami.
Poniższa tabela przedstawia pierwotny typ danych i odpowiadającą mu klasę opakowania.
Typ prymitywny | Klasa opakowania |
boolean | Boolean |
PA | Bajt |
zwęglać | Postać |
pływak | Pływak |
int | Liczba całkowita |
długo | Długo co to jest obiekt skanera |
krótki | Krótki |
podwójnie | Podwójnie |
Zwróć uwagę na wielkość liter w klasach Wrapper.
W ten sposób dotarliśmy do końca artykułu o „Autoboxing in Java”. Jeśli chcesz dowiedzieć się więcej, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online. Szkolenie i certyfikacja J2EE i SOA firmy Edureka ma na celu przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu „Autoboxing in Java”, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.