在这种情况下,前两个语句后变量y
的值是什么?我假设它是整数7,但我的书上说的对象automatic unboxing
只与关系运算符<>出现。”我有点困惑Integer y
如何变量得到它的价值。任何unboxing
是否发生在newInteger(x)
?使用Integer类别拆箱int值
Integer x = 7;
Integer y = new Integer(x);
println("x == y" + " is " + (x == y))
在这种情况下,前两个语句后变量y
的值是什么?我假设它是整数7,但我的书上说的对象automatic unboxing
只与关系运算符<>出现。”我有点困惑Integer y
如何变量得到它的价值。任何unboxing
是否发生在newInteger(x)
?使用Integer类别拆箱int值
Integer x = 7;
Integer y = new Integer(x);
println("x == y" + " is " + (x == y))
Integer x = 7;
在这种情况下,int
字面7被自动盒装入Integer
可变x
。
Integer y = new Integer(x);
这INV olves将Integer
变量x
自动拆箱为int
(临时)变量,该变量被传递给Integer
构造函数。换句话说,它是等效于:
Integer y = new Integer(x.intValue());
此语句之后,y
指向一个新的对象比x
不同但包含相同int
包裹值。
当编译器是某些,你想比较值发生拆箱。使用==
可以比较Objects
,因此给出false
,因为==
是对象之间的有效操作。由于<
和>
没有Object < OtherObject
的概念,所以可以肯定你是用数字表示的。
public void test() {
Integer x = 7;
Integer y = new Integer(x) + 1;
System.out.println("x == y" + " is " + (x == y));
System.out.println("x.intValue() == y.intValue()" + " is " + (x.intValue() == y.intValue()));
System.out.println("x < y" + " is " + (x < y));
System.out.println("x.intValue() < y.intValue()" + " is " + (x.intValue() < y.intValue()));
}
X == y是假
x.intValue()== y.intValue()为真
X < y为真
x.intValue( )< y.intValue()为真
在这种情况下是什么变量y的前两个语句后的值?
可变y
的值是一个参照包含值7整数对象。
可能重复[什么比较整数与==做什么?](http://stackoverflow.com/questions/3689745/what-exactly-does-comparing-integers-with-do) –
@AbimaranKugathasan我明白当==比较两个对象,但我不明白怎么y''获取其值会发生什么。 – Ian
注意' “X == Y” + “是” + X == y'的意思是:'( “X == Y” + “是” + x)的== y',这是不是你想要的。使用括号:' “X == Y” + “是” +(X == Y)' – Jesper