La comparaison d'entiers dans Java est difficile, en ce que int
et Integer
se comportent différemment. Je reçois cette partie.Comparaison d'entiers dans Java
Mais, comme ce example program montre, (Integer)400
(ligne n ° 4) se comporte différemment (Integer)5
(ligne n ° 3). Pourquoi est-ce??
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
System.out.format("1. 5 == 5 : %b\n", 5 == 5);
System.out.format("2. (int)5 == (int)5 : %b\n", (int)5 == (int)5);
System.out.format("3. (Integer)5 == (Integer)5 : %b\n", (Integer)5 == (Integer)5);
System.out.format("4. (Integer)400 == (Integer)400 : %b\n", (Integer)400 == (Integer)400);
System.out.format("5. new Integer(5) == (Integer)5 : %b\n", new Integer(5) == (Integer)5);
}
}
Résultat
1. 5 == 5 : true // Expected
2. (int)5 == (int)5 : true // Expected
3. (Integer)5 == (Integer)5 : true // Expected
4. (Integer)400 == (Integer)400 : false // WHAT?
5. new Integer(5) == (Integer)5 : false // Odd, but expected
Cela peut vous aider à http://stackoverflow.com/questions/1700081/why-does-128-128-return-false-but- 127-127-return-true-dans-ce-code –
check out [this] (http://stackoverflow.com/questions/10002037/comparing-integer-values-in-java-strange-behavior) – SomeJavaGuy
Copie possible: http://stackoverflow.com/questions/9824053/how-and-operators-work-on-integers-in-java – assylias