java逻辑运算符练习题
public class LogicOperatorExercise{
public static void main(String[] args) {
boolean x = true;
boolean y = false;
short z = 46;
if ((z++ == 46) && (y = true)) z++;
//首先z++先比较再自增,所以前一个式子的输出为true,之后z自增变成47
//之后我们观察后一个式子中 y = true的意义是将true赋值给y,并非是比较(比较是==,赋值是=)
//所以后一个式子为true,并且y变成true
//所以if语句为true,进行z++语句,所以z变成48
if ((x = false) || (++z == 49)) z++;
//首先将false赋值给x,所以前一个语句false,并且x变成false
//虽然是短路或运算但是前一个式子为false,所以运行后一个式子
//++z先进行自增,z = 49,之后再进行运算 z == 49为true
//所以if语句为true(||有一个真就是真),进行z++语句,z变成50
System.out.println("z=" + z);//z = 50
}
}
本题主要的考察点除了基本的逻辑运算符,短路与短路或的运算符运算,同时考察了赋值(=)和等于(==)符号的区别,同时对于变量本身的自增运算的符号区别(++z和z++)等基础运算的综合考察