Sobes.tech
Junior

Πώς πραγματοποιείται η μετατροπή τύπων αναφοράς σε πρωταρχικούς τύπους και το αντίστροφο;

sobes.tech AI

Απάντηση από AI

Η μετατροπή τύπων αναφοράς (περιέλιξης) σε πρωταρχικούς τύπους (unboxing) και το αντίστροφο (autoboxing) συμβαίνει αυτόματα στη Java, αλλά μπορεί επίσης να γίνει ρητά.

Autoboxing: Αυτόματη μετατροπή ενός πρωταρχικού τύπου στον αντίστοιχο τύπο αναφοράς.

int primitiveInt = 10;
// Αυτόματα μετατρέπεται σε Integer
Integer wrapperInt = primitiveInt; 

Unboxing: Αυτόματη μετατροπή ενός τύπου αναφοράς στον αντίστοιχο πρωταρχικό τύπο.

Integer wrapperInteger = 20;
// Αυτόματα μετατρέπεται σε int
int primitiveInteger = wrapperInteger;

Ρητή μετατροπή:

Μετατροπή τύπου αναφοράς σε πρωταρχικό τύπο: με χρήση μεθόδων όπως intValue(), doubleValue(), κ.λπ.

Integer wrapperInt = 30;
int primitiveInt = wrapperInt.intValue(); // ρητή μετατροπή

Double wrapperDouble = 40.5;
double primitiveDouble = wrapperDouble.doubleValue(); // ρητή μετατροπή

Μετατροπή πρωταρχικού τύπου σε τύπο αναφοράς: με χρήση κατασκευαστών κλάσεων περιέλιξης ή στατικών μεθόδων valueOf(). Η μέθοδος valueOf() προτιμάται, καθώς μπορεί να κάνει cache τις τιμές.

int primitiveInt = 50;
Integer wrapperInt = new Integer(primitiveInt); // χρήση του κατασκευαστή (παλιό)

double primitiveDouble = 60.7;
Double wrapperDouble = Double.valueOf(primitiveDouble); // χρήση της `valueOf()`

Πίνακας μετατροπών:

Πρωταρχικός Τύπος Τύπος Αναφοράς
boolean Boolean
byte Byte
short Short
char Character
int Integer
long Long
float Float
double Double