题目
19.(简答题,3.0分)关于逻辑运算符和复合赋值运算符。写出下面程序的运行结果。public static void main(String[] args){String s="";Boolean b1=true;Boolean b2=false;if(b2=false|(21%5)>2)s+="x";if(b1||(b2==true))s+="y";if(b2==true)s+="z";System.out.println(s);}
19.(简答题,3.0分)
关于逻辑运算符和复合赋值运算符。写出下面程序的运行结果。
public static void main(String[] args){
String s="";
Boolean b1=true;
Boolean b2=false;
if(b2=false|(21%5)>2)s+="x";
if(b1||(b2==true))s+="y";
if(b2==true)s+="z";
System.out.println(s);
}
题目解答
答案
1. 第一个 `if` 条件:`b2 = false | (21 % 5 > 2)`。
- `(21 % 5) > 2` 为 `false`,`false | false` 为 `false`。
- `b2` 被赋值为 `false`,条件为 `false`,不执行 `s += "x";`。
2. 第二个 `if` 条件:`b1 || (b2 == true)`。
- `b1` 为 `true`,短路后条件为 `true`,执行 `s += "y";`,`s` 变为 `"y"`。
3. 第三个 `if` 条件:`b2 == true` 为 `false`,不执行 `s += "z";`。
最终,`s` 的值为 `"y"`。
答案:`y`
解析
本题主要考察逻辑运算符(|、||)和复合赋值运算符(+=)的使用,以及布尔变量的赋值和条件判断。解题的关键在于理解不同逻辑运算符的运算规则和短路特性,以及赋值语句和条件判断语句的执行顺序。
- 第一个
if条件判断:- 对于表达式
b2 = false | (21 % 5 > 2),先计算(21 % 5 > 2)。- 根据取模运算公式 $a\%b=a - b\times\lfloor\frac{a}{b}\rfloor$,可得 $21\%5 = 21 - 5\times\lfloor\frac{21}{5}\rfloor=21 - 5\times4 = 1$。
- 因为 $1<2$,所以
(21 % 5 > 2)的结果为false。
- 再计算
false | false,逻辑或运算符|只要两边有一个为true结果就为true,两边都为false结果才为false,所以false | false为false。 - 最后将
false赋值给b2,整个条件表达式的值为false,因此不执行s += "x";。
- 对于表达式
- 第二个
if条件判断:- 对于表达式
b1 || (b2 == true),逻辑或运算符||具有短路特性,即当左边的表达式为true时,右边的表达式不再计算。 - 已知
b1为true,所以整个条件表达式的值为true,执行s += "y";,此时s的值变为"y"。
- 对于表达式
- 第三个
if条件判断:- 对于表达式
b2 == true,由于前面已经将false赋值给b2,所以b2 == true的结果为false,不执行s += "z";。
- 对于表达式