首页 > 解决方案 > 在我的课本上得到了这个问题,无法理解程序中的逻辑或答案键中给出的答案(Java)

问题描述

执行步骤 1,2 和 3 后,步骤 4 将打印什么?

boolean b1=new boolean("TRUE");   //step 1
boolean b2=new boolean("true");   //step 2
boolean b3=new boolean("JUNK");   //step 3
System.out.println(""+b1+b2+b3);  //step 4

提供以下选项以从答案中进行选择:

(a) 编译器错误
(b) 运行时错误
(c) truetruefalse
(d)truetruetrue

正确答案是

(c) 真假

有人能解释一下逻辑吗?

标签: javaobjectoop

解决方案


如果您的意思是Boolean代替boolean,那么正确答案是(c) truetruefalse因为如果您查看 java 源代码,您会发现:

public Boolean(String s) {
    this(parseBoolean(s));
}

那个电话:

public static boolean parseBoolean(String s) {
    return "true".equalsIgnoreCase(s);
}

因此,如果您的字符串不是true(无论如何),那么您将得到false.


请注意:new Boolean(String s)自 Java 9 起已弃用。


推荐阅读