Junior
Τι είναι οι κλάσεις περιτύλιξης (Wrapper classes) στη Java;
sobes.tech AI
Απάντηση από AI
Οι κλάσεις wrapper στη Java είναι κλάσεις που παρέχουν μια αντικειμενοστραφή αναπαράσταση των πρωταρχικών τύπων δεδομένων. Επιτρέπουν τη χρήση πρωταρχικών τιμών σε συμφραζόμενα όπου απαιτούνται αντικείμενα, π.χ., σε συλλογές ή κατά την εργασία με πολυνηματικότητα.
Οι κύριες κλάσεις wrapper:
ByteShortIntegerLongFloatDoubleBooleanCharacter
Παραδείγματα χρήσης:
Χρήση πρωταρχικών τύπων:
// Πρωταρχικός τύπος
int x = 10;
Χρήση της κλάσης wrapper:
// Κλάση wrapper
Integer y = new Integer(20); // Παλαιότερος τρόπος δημιουργίας
Integer z = 30; // Autoboxing (αυτόματη μετατροπή πρωταρχικού σε αντικείμενο)
Μετατροπή μεταξύ πρωταρχικών και αντικειμένων wrapper:
- Autoboxing: Αυτόματη μετατροπή πρωταρχικού σε αντικείμενο wrapper.
// Autoboxing int primitiveInt = 100; Integer wrapperInt = primitiveInt; - Unboxing: Αυτόματη μετατροπή αντικειμένου wrapper σε πρωταρχικό:
// Unboxing Integer wrapperInteger = new Integer(200); int primitiveInteger = wrapperInteger;
Πλεονεκτήματα των κλάσεων wrapper:
- Εργασία με συλλογές: Οι συλλογές (
List,Set,Map) αποθηκεύουν μόνο αντικείμενα. - Εργασία με
null: Τα αντικείμενα wrapper μπορούν να έχουν την τιμήnull, σε αντίθεση με τους πρωταρχικούς τύπους. - Παρέχουν χρήσιμες μεθόδους: Οι κλάσεις wrapper έχουν μεθόδους για μετατροπή συμβολοσειρών, σύγκριση τιμών κ.λπ. π.χ.,
Integer.parseInt(String s). - Εργασία με γενικούς τύπους: Οι γενικοί τύποι λειτουργούν μόνο με αντικείμενα.
Μειονεκτήματα των κλάσεων wrapper:
- Κατανάλωση μνήμης: Τα αντικείμενα wrapper καταλαμβάνουν περισσότερο χώρο μνήμης από τους πρωταρχικούς τύπους.
- Μείωση απόδοσης: Η αυτόματη μετατροπή (autoboxing και unboxing) μπορεί να μειώσει ελαφρώς την απόδοση. Παράδειγμα χρήσης σε συλλογή:
import java.util.ArrayList;
import java.util.List;
public class WrapperExample {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(10); // Autoboxing
numbers.add(new Integer(20)); // Ρητή δημιουργία αντικειμένου
int firstNum = numbers.get(0); // Unboxing
System.out.println(firstNum);
}
}