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.