Tout d'abord, votre façon d'écrire id!="" est fausse. Vous devriez l'écrire comme !id.equals(""). Deuxièmement, vous devez comprendre la signification de == et equals
== signifie que les deux objets sont des références au même objet ==null signifie que cet objet n'est une référence à aucun objet instance et que l'objet est vide.
equals est une méthode de la classe String, indiquant que le contenu des deux chaînes est le même.
1. La méthode equals() existe dans la classe Object Toutes les classes d'emballage telles que Integer, Long, etc. ont réimplémenté cette fonction si vous écrivez vous-même une classe et l'utilisez. la méthode class equals(), l'effet de cette méthode est équivalent à "==", elle déterminera si les références d'objet des deux classes sont les mêmes, et dans la classe wrapper equals déterminera si le contenu du les objets sont égaux. 2. Si le jugement est écrit comme if(id.equals("")&&id!=null), il y aura un problème NullPoint. Si la valeur de id est nulle, une exception sera levée si vous supprimez l'appel à la méthode equals().
3.
Expliquez le programme ci-dessusstr1 == str2Ce qui compare, c'est si les deux références sont identiques. La chaîne que nous déclarons sera stockée dans le pool de constantes de chaîne Lorsque str1, abc sera mis dans le pool de constantes.str3 vérifiera d'abord s'il y a une chaîne abc dans le pool de constantes. Si c'est le cas, elle sera référencée directement. Étant donné que str2 crée directement un nouvel objet, l'adresse doit être différente de str1. Alors pourquoi est-ce la même chose après avoir utilisé la méthode intern ? Lorsque la méthode intern est appelée, si le pool contient déjà une chaîne égale à cet objet String, la chaîne du pool sera alors renvoyée. temps, il ne générera pas de nouvelles chaînes. Étant donné que la chaîne du pool de constantes est toujours référencée, la valeur de retour de str2.intern() == str1 est toujours true.
id==null signifie que l'identifiant de référence ne pointe vers aucun objet, c'est juste une référence ; seuls des objets spécifiques en Java peuvent appeler des méthodes (voici equals()). Alors appelez id==null quand equals() lancera NullPointerException.
Ce code est mal écrit. Il n'utilise pas d'égaux pour comparer les chaînes vides, et il existe de nombreuses chaînes vides, telles que tabulation, retour chariot, etc. Il n'y a pas de vérification prête à l'emploi. utilisés, comme StingUtils dans Apache Commons. La méthode .isBlank et la méthode Strings.isNullOrEmpty de Guava peuvent toutes deux déterminer l'état des chaînes nulles et vides.
Vous devez toujours comprendre la différence entre == et égal, la différence entre "" et null == est de comparer si la valeur est égale ou si l'adresse du type de référence est égale. >equals consiste à comparer la valeur de l'adresse de type référence, c'est-à-dire le contenu Sont-ils égaux .
Tout d'abord, votre façon d'écrire
id!=""
est fausse. Vous devriez l'écrire comme!id.equals("")
.Deuxièmement, vous devez comprendre la signification de
==
etequals
==
signifie que les deux objets sont des références au même objet==null
signifie que cet objet n'est une référence à aucun objet instance et que l'objet est vide.equals
est une méthode de la classe String, indiquant que le contenu des deux chaînes est le même.C’est écrit comme ça tout le temps. Je me demande pourquoi ?
Les chaînes vides nécessitent en fait des valeurs égales, sinon une erreur se produira. null peut être utilisé !=
Le code suivant, le résultat est faux
Donc, des égaux doivent être utilisés pour déterminer la chaîne vide, comme
Ou utilisez la longueur pour déterminer et étendre n'importe quelle CharSequence, telle que
1. La méthode
equals()
existe dans la classeObject
Toutes les classes d'emballage telles queInteger
,Long
, etc. ont réimplémenté cette fonction si vous écrivez vous-même une classe et l'utilisez. la méthode class equals(), l'effet de cette méthode est équivalent à "==", elle déterminera si les références d'objet des deux classes sont les mêmes, et dans la classe wrapperequals
déterminera si le contenu du les objets sont égaux.2. Si le jugement est écrit comme
if(id.equals("")&&id!=null)
, il y aura un problème NullPoint. Si la valeur de id est nulle, une exception sera levée si vous supprimez l'appel à la méthodeequals()
.3.
Expliquez le programme ci-dessus
str1 == str2
Ce qui compare, c'est si les deux références sont identiques. La chaîne que nous déclarons sera stockée dans le pool de constantes de chaîne Lorsquestr1
, abc sera mis dans le pool de constantes.str3
vérifiera d'abord s'il y a une chaîneabc
dans le pool de constantes. Si c'est le cas, elle sera référencée directement. Étant donné que str2 crée directement un nouvel objet, l'adresse doit être différente de str1. Alors pourquoi est-ce la même chose après avoir utilisé la méthodeintern
?Lorsque la méthode
intern
est appelée, si le pool contient déjà une chaîne égale à cet objet String, la chaîne du pool sera alors renvoyée. temps, il ne générera pas de nouvelles chaînes. Étant donné que la chaîne du pool de constantes est toujours référencée, la valeur de retour destr2.intern() == str1
est toujourstrue
.C'est tout. (•'◡'gree)
id==null
signifie que l'identifiant de référence ne pointe vers aucun objet, c'est juste une référence ; seuls des objets spécifiques en Java peuvent appeler des méthodes (voiciequals()
). Alors appelezid==null
quandequals()
lanceraNullPointerException
.Ce code est mal écrit. Il n'utilise pas d'égaux pour comparer les chaînes vides, et il existe de nombreuses chaînes vides, telles que tabulation, retour chariot, etc. Il n'y a pas de vérification prête à l'emploi. utilisés, comme StingUtils dans Apache Commons. La méthode .isBlank et la méthode Strings.isNullOrEmpty de Guava peuvent toutes deux déterminer l'état des chaînes nulles et vides.
Vous devez toujours comprendre la différence entre == et égal, la différence entre "" et null
== est de comparer si la valeur est égale ou si l'adresse du type de référence est égale. >equals consiste à comparer la valeur de l'adresse de type référence, c'est-à-dire le contenu Sont-ils égaux
.