Java – compare 2 integers, strange behavior
                                        
                    •
                    Java                                    
                See the English answer > why is 128 = = 128 false but 127 = = 127 is true when comparing integer wrappers in Java? 6
public static void main(String[] args) {
    Integer i1 = 127;
    Integer i2 = 127;
    boolean flag1 = i1 == i2;
    System.out.println(flag1);
    Integer i3 = 128;
    Integer i4 = 128;
    boolean flag2 = i3 == i4;
    System.out.println(flag2);
}
However, strangely, the results are as follows:
true false
Can you explain why this difference occurs?
Solution
Integers are objects, and the = = operator may "work" (in the sense you expect it – compare values) only for numbers between [- 128127] Look at JLS – 5.1 7. Boxing Conversion:
The value you want to compare is out of range, and the result will be evaluated as false You should use integer #equals, or only love primitive int
                            The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
                        
                                            
                        THE END
                    
                    
                    
                                                        二维码
                        
                        
                                                
                        