Unboxing and Boxing in Java, but something feels strange

28 Views Asked by At
        Integer a1=164;
        Integer a2=164;
        
        System.out.println(a1==a2);
        System.out.println(a1.equals(a2));

        Integer a3=new Integer(164);
        Integer a4=new Integer(164);
        
        System.out.println(a3==a4);
        System.out.println(a3.equals(a4));

This outputs as - 
false
true
false
true

BUT, same code with a slightly different input works in a different way

        Integer a1=64;
        Integer a2=64;
        
        System.out.println(a1==a2);
        System.out.println(a1.equals(a2));

        Integer a3=new Integer(64);
        Integer a4=new Integer(64);
        
        System.out.println(a3==a4);
        System.out.println(a3.equals(a4));

This outputs as -
true
true
false
true

I am sure somewhere the concept of unboxing is playing with me, but I cannot figure this out. Thanks in advance.

P.S. I am not sure if we have a similar question, I did not find one.

0

There are 0 best solutions below