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 |