recherche

Maison  >  Questions et réponses  >  le corps du texte

Java中为什么查询空字符串跟判断是否为null的时候可以不用equals?

if(id!=null&&id!="")
代码中经常这样写,空字符串跟null 都不用equals吗?

大家讲道理大家讲道理2890 Il y a quelques jours526

répondre à tous(8)je répondrai

  • 高洛峰

    高洛峰2017-04-17 17:53:37

    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

    1. == 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.

    2. equals est une méthode de la classe String, indiquant que le contenu des deux chaînes est le même.

    répondre
    0
  • 怪我咯

    怪我咯2017-04-17 17:53:37

    C’est écrit comme ça tout le temps. Je me demande pourquoi ?

    répondre
    0
  • 怪我咯

    怪我咯2017-04-17 17:53:37

    Les chaînes vides nécessitent en fait des valeurs égales, sinon une erreur se produira. null peut être utilisé !=

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:53:37

    Le code suivant, le résultat est faux

    String d = new String("");
    System.out.println(""==d);

    Donc, des égaux doivent être utilisés pour déterminer la chaîne vide, comme

    public static boolean isEmpty(String str) {
        return (str == null || "".equals(str));
    }

    Ou utilisez la longueur pour déterminer et étendre n'importe quelle CharSequence, telle que

    public static boolean isEmpty(final CharSequence cs) {
        return cs == null || cs.length() == 0;
    }

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-17 17:53:37

    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.

    C'est tout. (•'◡'gree)

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-17 17:53:37

    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.

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:53:37

    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.

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:53:37

    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
    .

    répondre
    0
  • Annulerrépondre