Junior
Jak dokonać konwersji typów referencyjnych na typy prymitywne i odwrotnie?
sobes.tech AI
Odpowiedź od AI
Konwersja typów odniesienia (opakowania) na typy prymitywne (odpakowywanie) i odwrotnie (autoboxing) odbywa się automatycznie w Javie, ale można ją również wykonać jawnie.
Autoboxing: Automatyczna konwersja typu prymitywnego na odpowiadający mu typ odniesienia.
int primitiveInt = 10;
// Automatycznie konwertuje się na Integer
Integer wrapperInt = primitiveInt;
Odpakowywanie: Automatyczna konwersja typu odniesienia na odpowiadający mu typ prymitywny.
Integer wrapperInteger = 20;
// Automatycznie konwertuje się na int
int primitiveInteger = wrapperInteger;
Jawna konwersja:
Konwersja typu odniesienia na prymitywny: użycie metod takich jak intValue(), doubleValue(), itd.
Integer wrapperInt = 30;
int primitiveInt = wrapperInt.intValue(); // jawna konwersja
Double wrapperDouble = 40.5;
double primitiveDouble = wrapperDouble.doubleValue(); // jawna konwersja
Konwersja typu prymitywnego na odniesienie: użycie konstruktorów klas opakowujących lub metod statycznych valueOf(). Metoda valueOf() jest preferowana, ponieważ może buforować wartości.
int primitiveInt = 50;
Integer wrapperInt = new Integer(primitiveInt); // użycie konstruktora (przestarzałe)
double primitiveDouble = 60.7;
Double wrapperDouble = Double.valueOf(primitiveDouble); // użycie `valueOf()`
Tabela konwersji:
| Typ prymitywny | Typ odniesienia |
|---|---|
| boolean | Boolean |
| byte | Byte |
| short | Short |
| char | Character |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |