关于Java中Boolean字符串参数实例化后输出结果的逻辑解析求助
关于Boolean实例化与输出结果的详细解释
嘿,我来帮你理清楚这道题的逻辑,首先得先纠正题目里的一个关键笔误——Java里的基本类型boolean根本不能用new关键字加字符串参数来实例化,题目里的代码应该是用包装类Boolean(首字母大写),不然第一步就直接编译错误了,和给出的正确选项也对不上,所以我们先基于修正后的代码来分析:
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
1. 先搞懂Boolean构造函数的核心规则
Java的Boolean包装类有一个接受String参数的构造函数,它的判断逻辑非常明确:
- 如果传入的字符串不是
null,并且忽略大小写后等于"true",就会创建一个代表true的Boolean对象; - 其他所有情况(包括字符串是"false"、"JUNK",甚至
null),都会创建代表false的Boolean对象。
2. 逐个拆解变量赋值逻辑
- step1:
Boolean b1 = new Boolean("TRUE");
"TRUE"忽略大小写后就是"true",完全符合构造函数返回true的条件,所以b1对应的布尔值是true。 - step2:
Boolean b2 = new Boolean("true");
字符串完全匹配"true",所以b2对应的布尔值也是true。 - step3:
Boolean b3 = new Boolean("JUNK");
"JUNK"不管怎么转大小写都和"true"不沾边,所以b3对应的布尔值是false。
3. 步骤4的字符串拼接逻辑
当执行System.out.println(""+b1+b2+b3);时,开头的空字符串""会触发字符串拼接规则:
- 每个
Boolean对象在和字符串拼接时,会自动调用自身的toString()方法,true会转成字符串"true",false转成"false"; - 拼接顺序是从左到右:
"" + b1得到"true",再加上b2得到"truetrue",最后加上b3就得到"truetruefalse"。
为什么其他选项不对?
- (a) 编译错误:只有当代码用了基本类型
boolean来new时才会编译错,修正为Boolean包装类后编译完全正常; - (b) 运行时错误:
Boolean的这个构造函数不会抛出运行时异常,所有合法字符串输入都能正常处理; - (d) truetruetrue:显然不符合
b3的判断逻辑,"JUNK"不会被判定为true。
所以最终输出就是选项(c)的truetruefalse。
内容的提问来源于stack exchange,提问作者AltercatingCurrent
相关产品推荐
相关产品推荐

