Pages

Tuesday, September 7, 2010

Java Common Mistakes - == String Comparison

Ένα από τα κλασσικά λάθη των αρχάριων στη Java.

Η σύγκριση Strings με τον τελεστή ==.

Τα Java Strings είναι αντικείμενα της κλάσης java.lang.String. Ο τελεστής == όταν χρησιμοποιείται σε αντικείμενα δε κάνει τίποτα παραπάνω από το να ελέγχει εαν τα δύο αντικείμενα "δείχνουνε" στην ουσία στην ίδια θέση μνήμης.

Οπότε με αυτό το τρόπο δεν συγκρίνουμε τα περιεχόμενα των δύο Strings, άρα παίρνουμε πιθανώς και λάθος αποτελέσματα.

Ο σωστός τρόπος για κάτι τέτοιο θα ήταν με τη χρήση της μεθόδου java.lang.String equals().
Η equals() επιστρέφει true εφόσον τα δύο Strings είναι ίσα και false στην αντίθετη περίπτωση.

Έστω ότι θέλουμε να συγκρίνουμε δύο Strings.
Λάθος παράδειγμα :
//find out if user entered a "quit" command
if (commandInput == "quit") {
   System.exit(0);
}
Σωστό παράδειγμα
//find out if user entered a "quit" command
if (commandInput.equals("quit") {
   System.exit(0);
}

Το συγκεκριμένο λάθος είναι πολύ πονηρό λόγω του ότι είναι στην ουσία έγκυρος κώδικας, όμως δεν μας αποδίδει τα αποτελέσματα που θέλουμε.

No comments:

Post a Comment