Junior
Πώς μπορούμε να συγκρίνουμε τους πρωταρχικούς τύπους δεδομένων μεταξύ τους;
sobes.tech AI
Απάντηση από AI
Οι πρωταρχικοί τύποι δεδομένων στη Java συγκρίνονται με βάση την τιμή τους χρησιμοποιώντας τελεστές σύγκρισης:
==(ίσον)!=(διαφορετικό)>(μεγαλύτερο)<(μικρότερο)>=(μεγαλύτερο ή ίσο)<=(μικρότερο ή ίσο)
// Σύγκριση ακέραιων αριθμών
int x = 10;
int y = 20;
boolean isEqual = (x == y); // false
boolean isGreater = (x > y); // false
// Σύγκριση αριθμών κινητής υποδιαστολής
double a = 3.14;
double b = 3.14;
boolean areEqualDoubles = (a == b); // true (για ακριβείς τιμές)
// Σύγκριση χαρακτήρων
char c1 = 'A';
char c2 = 'B';
boolean isCLessThanC2 = (c1 < c2); // true
// Σύγκριση τύπου boolean
boolean flag1 = true;
boolean flag2 = false;
boolean areFlagsEqual = (flag1 == flag2); // false
Είναι σημαντικό να θυμόμαστε ότι κατά τη σύγκριση αριθμών κινητής υποδιαστολής (float, double), η άμεση χρήση του == μπορεί να είναι ανακριβής λόγω του τρόπου αναπαράστασης των αριθμών στη μνήμη. Σε τέτοιες περιπτώσεις, για τον έλεγχο της κατά προσέγγιση ισότητας, χρησιμοποιείται η σύγκριση της απόλυτης τιμής της διαφοράς με μια μικρή ανοχή (epsilon).
double val1 = 0.1 + 0.2; // στην πραγματικότητα δεν είναι ακριβώς 0.3 λόγω ακρίβειας
double val2 = 0.3;
double epsilon = 1e-9; // Μικρή ανοχή
// Ανακριβής τρόπος
boolean incorrectEquality = (val1 == val2); // μπορεί να είναι false
// Συνιστώμενος τρόπος για σύγκριση αριθμών κινητής υποδιαστολής
boolean correctEquality = (Math.abs(val1 - val2) < epsilon); // true