布尔值查询

时间:2015-04-18 14:31:50

标签: java boolean-logic

人们可以解释为什么这段代码会给出结果

public class InputTest {
    public static void main(String[] args) {
        Integer w = new Integer(1);
        Integer x = 1;
        Integer y = x;
        double z = x;
        System.out.println(w.equals(y));
        System.out.println(w == y);
        System.out.println(x == y);
        System.out.println(z == w);
    }}

1 个答案:

答案 0 :(得分:1)

w.equals(y)

返回true,因为Integer.equals会比较Integer个对象所包含的值。


w == y

产生false,因为您比较了引用,而不是Integer对象包含的值。由于您明确创建了新的Integer对象wInteger w = new Integer(1)wy不是同一个对象。


x == y

生成true,因为您将x分配给yy = x)。 xy引用相同的Integer对象。


z == w

产生true,因为比较中涉及的一种类型是原语; w已取消装箱并转换为double(产生1d)。这项任务也是如此:double z = x;。比较这些原语会产生true