您正在尝试比较两个不同的对象而不是它们的值. z和h指向两个不同的Integer对象,它们保持相同的值.
z == h
将检查两个对象是否相等.所以它会返回false.
如果要比较Integer对象存储的值,请使用equals方法.
Integer z = new Integer(43); // Object1 is created with value as 43.
z++; // Now object1 holds 44.
Integer h = new Integer(44); // Object2 is created with value as 44.
所以最后我们有两个不同的Integer对象,即object1和object2,其值为44.
现在
z = h
这将检查z和h指向的对象是否相同.即object1 == object2
这是假的.
如果你这样做
Integer z = new Integer(43); // Object1 is created with value as 43.
z++; // Now object1 holds 44. Z pointing to Object1
Integer h = z; // Now h is pointing to same object as z.
现在
z == h
将返回真实.