java - Comparing two Integer Wrapper classes -
why program printing false in first print statement , true in print statement.? , i1 2 different objects first statement must print "true", expected, second print statement prints "false" creates confusion.
public static void main(string[] args) { integer = new integer(10); integer i1 = new integer(10); system.out.println(i == i1); //printing false i++; i1++; system.out.println(i == i1);//printing true }
using new
keyword always creates 2 different instances. following true:
new integer(10) != new integer(10)
hence first line printing "false".
then:
i++;
hides unboxing , boxing. equivalent to:
i = integer.valueof(i.intvalue() + 1);
as described in the javadoc of integer.valueof
, values -128 127 (at least) cached: getting cached instance of integer.valueof(11)
both i++
, i1++
, hence second line printing "true".
Comments
Post a Comment