Comparaison des références d'objets et égalité des valeurs en Java
En Java, déterminer l'égalité des objets peut prêter à confusion lors de la comparaison de chaînes à l'aide de l'opérateur == . Examinons ce comportement apparemment ambigu.
Considérons le scénario suivant :
// Define a String array String[] parts = {"231", "CA-California", "Sacramento-155328", "aleee", "Customer Service Clerk", "Alegra Keith.doc.txt"}; // Perform comparison if ("231" == parts[0]) { // This comparison will evaluate to false }
Étonnamment, la comparaison renvoie faux. En effet, l'opérateur == en Java vérifie l'égalité des références d'objet, et non l'égalité des valeurs. Contrairement à de nombreux autres langages, les chaînes Java sont des objets. Lorsque vous comparez deux chaînes à l'aide de ==, il compare les adresses mémoire où résident ces objets, et non les valeurs réelles des chaînes.
Pour comparer les valeurs réelles des chaînes, vous devez utiliser la méthode String.equals :
if ("231".equals(parts[0])) { // This comparison will evaluate to true }
Cette méthode vérifie le contenu des chaînes, pas leurs références d'objet.
N'oubliez pas que pour tous les objets en Java, l'opérateur == vérifie référence l'égalité, tandis que la méthode equals compare les valeurs réelles des objets. Il est important d'utiliser égal lors de la vérification de l'égalité des objets, car == peut conduire à des conclusions incorrectes lors de la comparaison des références d'objets.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!