Maison >Java >Pourquoi primitive n'a-t-elle pas besoin de la méthode .equals en Java ?

Pourquoi primitive n'a-t-elle pas besoin de la méthode .equals en Java ?

PHPz
PHPzavant
2024-02-08 23:18:21539parcourir

En Java, primitif (type de données primitif) fait référence au type de données de base dans le langage Java, tel que int, double, char, etc. En revanche, il existe des types de données de référence, tels que String, Object, etc. Contrairement aux types de données de référence, les types primitifs n'ont pas besoin d'être comparés à l'aide de la méthode .equals(). En effet, les variables de type primitif stockent les valeurs réelles plutôt que les références d'objet. Par conséquent, lorsque vous comparez deux variables de type primitif, vous pouvez directement utiliser l'opérateur == pour la comparaison, car il compare si les valeurs elles-mêmes sont égales. Pour les types de données de référence, vous devez utiliser la méthode .equals(), car elle compare si les références d'objet pointent vers le même objet. C'est pourquoi en Java, les types primitifs n'ont pas besoin de la méthode .equals().

Contenu de la question

Donc en Java, si vous comparez des chaînes, vous devez utiliser la méthode .equals car == compare uniquement l'adresse mémoire et non le contenu. C'est bon, je peux comprendre ça. Mais ce que je ne comprends pas, c'est pourquoi l'original n'a pas le même problème. Comment pouvons-nous utiliser l'opérateur == avec des primitives.

Solution de contournement

Cela revient au fait que les primitives ne sont pas des objets Java complets, elles sont donc "passées par valeur", alors que les objets sont "passés par référence".

De plus, vous ne pouvez pas utiliser une fonction .equals() sur une primitive car il ne s'agit pas d'un objet Java entièrement instancié à partir d'une classe et nécessite que la fonction soit définie dans la classe/l'objet.

La plupart des primitives ont un type d'objet équivalent, par exemple Integer est un type d'objet entièrement implémenté de int, en Java moderne, vous obtiendriez un type d'objet nommé AutoboxingIntegerint 的完整实现对象类型,在现代 Java 中,您会得到名为 自动装箱。所以如果你不使用int,而是使用Integer类型,那么你可以调用.equals(). Donc, si vous n'utilisez pas int, mais utilisez le type Integer, alors vous pouvez appeler

String en Java

est un peu spécial mais c'est fondamentalement un objet immuable.

Il s'agit d'une répartition aléatoire des informations, mais je pense que si vous les additionnez, vous comprendrez, espérons-le, ce qui se passe. 🎜

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer