Sobes.tech
Junior — Middle

Εξηγήστε την έννοια των τύπων αναφοράς στη γλώσσα Java και πώς διαφέρουν από τους πρωταρχικούς τύπους.

sobes.tech AI

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

Στη Java, υπάρχουν δύο βασικοί τύποι δεδομένων: primitive και αναφορικοί.

Primitive τύποι (π.χ., int, boolean, double) αποθηκεύουν άμεσα τις τιμές. Καταλαμβάνουν σταθερό μέγεθος μνήμης και περνούν με τιμή. Για παράδειγμα, όταν ανατίθεται μια μεταβλητή σε μια άλλη, αντιγράφεται η ίδια η τιμή.

Αναφορικοί τύποι είναι αντικείμενα και πίνακες. Μια μεταβλητή αναφορικού τύπου αποθηκεύει όχι την τιμή του αντικειμένου, αλλά μια αναφορά (διεύθυνση) στη μνήμη όπου βρίσκεται το αντικείμενο. Όταν ανατίθεται μια μεταβλητή αναφορικού τύπου σε μια άλλη, αντιγράφεται η αναφορά, όχι το αντικείμενο. Αυτό σημαίνει ότι και οι δύο μεταβλητές θα δείχνουν στο ίδιο αντικείμενο.

Παράδειγμα:

int a = 5;
int b = a; // αντιγράφεται η τιμή 5
b = 10; // το a θα παραμείνει 5

String s1 = new String("hello");
String s2 = s1; // αντιγράφεται η αναφορά στο αντικείμενο
s2 = "world"; // το s1 θα παραμείνει "hello", καθώς το String είναι αμετάβλητο

Επομένως, η κύρια διαφορά βρίσκεται στον τρόπο αποθήκευσης και μεταφοράς των δεδομένων: οι primitivi αποθηκεύουν τις τιμές απευθείας, ενώ οι αναφορικοί τύποι αποθηκεύουν αναφορές σε αντικείμενα στη μνήμη.