📜  Java程序的输出 |自动装箱和拆箱

📅  最后修改于: 2022-05-13 01:54:57.646000             🧑  作者: Mango

Java程序的输出 |自动装箱和拆箱

先决条件Java中的自动装箱和拆箱

1)以下程序的输出是什么?

class Main {
    public static void main(String[] args)
    {
        Double x1, y1, z1;
        double x2, y2, z2;
        x1 = 10.0;
        y1 = 4.0;
        z1 = x1 * x1 + y1 * y1;
        x2 = 10.0;
        y2 = 4.0;
        z2 = x2 * x2 + y2 * y2;
        System.out.print(z1 + " ");
        System.out.println(z2);
    }
}

选项:
A. 116.0 116.0
B. 运行时错误
C. 编译时错误
D. 116 116.0

答案: A. 116.0 116.0

说明:首先,值 10.0 和 20.0 分别在 x1 和 y1 中自动装箱。然后为了计算 z1,将 x1 和 y1 拆箱并计算表达式,然后将结果装箱到 z1 中。在打印 z1 时,它会自动取消装箱,然后打印该值然后重新装箱。 z2 通常使用原始数据类型计算。

2)以下程序的输出是什么?

class Main {
    public static void main(String[] args)
    {
        Boolean b1 = true;
        Boolean b2 = false;
        System.out.print((b1 == b2) + " ");
        System.out.print(b1.equals(b2));
    }
}

选项:
A. 编译时错误
B、假假
C. 假真
D. 真真

答案: B. false false

说明:值 true 和 false 分别在 b1 和 b2 中自动装箱。对于 b1==b2,b1 和 b2 被拆箱,然后比较返回 false。对于 b1.equals(b2),由于 b1 和 b2 是布尔对象,它们可以使用 equals() 方法进行比较。这也返回 false,因为 b1 和 b2 不相等。

3)以下程序的输出是什么?

class Main {
    public static void main(String args[])
    {
        Double x = new Double(10);
        double i = x.doubleValue();
        System.out.print(i + " " + x);
    }
}

选项:
A. 编译时错误
B. 10 10
C. 10.0 10.0
D. 10 10.0

答案: C. 10.0 10.0

解释: x 是一个 Double 类型的对象。因此,当打印 x 时,它将自动拆箱并打印 10.0。而 doubleValue() 是一种将 Double 对象拆箱为 double 的方法。因此,i 也将具有 10.0 的值。

4)以下程序的输出是什么?

class Main {
    static int funct(Integer x)
    {
        return x;
    }
    public static void main(String args[])
    {
        Integer x = funct(10);
        System.out.println(x);
    }
}

选项:
A. 编译时错误
B. 运行时错误
C. 10
D. 无输出

答案: C. 10

解释:当 10 被传递到funct() 时,它被自动装箱。当从函数返回值时,它被自动装箱,然后该值再次在 x 中自动装箱。当 x 被打印时,它再次被拆箱。

5)以下程序的输出是什么?

class Main {
    public static void main(String args[])
    {
        Boolean b1 = "TRUE";
        Boolean b2 = "FALSE";
        boolean b = b1 && b2;
        System.out.println(b);
    }
}

选项:
A. 编译时错误
B. 错误
C. 错误的
D. 对

答案: A. 编译时错误

解释:这将是一个编译时错误,因为“TRUE”和“FALSE”是字符串,不能转换为布尔值。