[JAVA] Jugement de valeur égale de Integer et int

-Utiliser égal au lieu de == pour le jugement d'égalité d'objet. Equals est défini pour les classes qui nécessitent un jugement d'égalité (devrait).

・ Je vois parfois un programme qui juge l'égalité de String avec ==, mais quand je le vois, je risque de devenir anémique. Pour le moment, le débogage est en cours. La raison pour laquelle cela fonctionne est que ce sera vrai s'il est retourné par cession.

-Bien que ce soit la même chose pour Integer, c'est un peu compliqué car il y a une primitive (int).

・ Vérifiez, y compris le bon sens.

-En conséquence, il convient de noter que lorsque == est utilisé dans le jugement d'égalité entre les entiers.Au moment du jugement d'égalité, il n'est pas vérifié un par un si la variable cible est Integer ou int. = Est utilisé. Ceci est dangereux ....

-Mais il semble très peu probable que les deux soient des nombres entiers.

Tips0048.java


package jp.avaj.lib.algo;

import jp.avaj.lib.test.ArTest;
import jp.avaj.lib.test.L;

public class Tips0048 {
  public static void main(String[] args) {
    //Lancer un cas de test
    ArTest.startTestCase("Tips0048");

    L.p("\n====Jugement de valeur égale de Integer et Integer");
    {
      Integer i0 = new Integer(5);
      Integer i1 = i0;
      Integer i2 = new Integer(5);
      //
      //Puisqu'il s'agit d'une mission, ce sera vrai.
      ArTest.isTrue("i0 vs i1","result",(i0 == i1));

      //C'est faux ⇒ ★ Seulement c'est dangereux
      ArTest.isFalse("i0 vs i2","result",(i0 == i2));
    }
    L.p("\n====Jugement de valeur égale de Integer et int");
    {
      Integer integer = new Integer(5);
      int int0 = 5;
      //
      //Jugement par égaux
      ArTest.isTrue("Integer.equals(int)","result",integer.equals(int0));
      // ==Jugement par
      ArTest.isTrue("Integer == int","result",integer == int0);
    }
    L.p("\n====Jugement de valeur égale de int et int ⇒ Omis");
    //
    L.p("\n====Jugement de magnitude entier et entier");
    {
      Integer integer0 = new Integer(5);
      Integer integer1 = new Integer(4);
      ArTest.isTrue("Integer > Integer","result",integer0 > integer1);
    }
    L.p("\n====Grand / petit jugement de Integer et int");
    {
      Integer integer0 = new Integer(5);
      ArTest.isTrue("Integer > int","result",integer0 > 4);
    }
    L.p("\n====Jugement de la taille de int et int ⇒ Omis");


    L.p("\n====Supplémentaire");
    //Ces deux éléments sont faux. Bien que ce soit naturel, cela semble très étrange.
    L.p((new Integer(1)).equals(new Long(1))+"");
    L.p(((new Boolean(true)) == (new Boolean(true)))+"");

    L.p("");
    //Terminer le cas de test
    ArTest.endTestCase();
  }
}

Le résultat de l'exécution est le suivant.

**** Tips0048 start ****

====Jugement de valeur égale de Integer et Integer
OK i0 vs i1:result=true
OK i0 vs i2:result=false

====Jugement de valeur égale de Integer et int
OK Integer.equals(int):result=true
OK Integer == int:result=true

====Jugement de valeur égale de int et int ⇒ Omis

====Jugement de magnitude entier et entier
OK Integer > Integer:result=true

====Grand / petit jugement de Integer et int
OK Integer > int:result=true

====Jugement de la taille de int et int ⇒ Omis

====Supplémentaire
false
false

**** Tips0048 summary ****
test count = 6
success    = 6

Recommended Posts

Jugement de valeur égale de Integer et int
Jugement de JSONArray et JSONObject
Même jugement / jugement de valeur égale / comparaison / ordre dans Swift et Java
Différence entre int et Integer en Java
Veuillez noter la division (division) de java kotlin Int et Int
Jugement du calendrier
Valeur de réglage de log4jdbc.properties