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”是字符串,不能转换为布尔值。