java语句中,判断条件是赋值语时,多种场景验证结论

时间:2024-02-20 12:22:57

java语句中,判断条件是赋值语时,多种场景验证结论

众所周知,java中有个基本类型是boolean,仅有true和false两个值。

在平时判断语句中,通常这样使用

int a = 1;
int b = 2;
if(a == b){
    System.out.print("true");
}
else{
    System.out.print("false");
}
//最后会输出false

或者这样使用

int a = 1;
int b = 2;
System.out.print(a==b);
//同样会输出false

那如果在if/while判断和输出命令中写类似a=b的赋值语句会怎么样呢?

首先来看if判断:

//方式1:赋值语句的参数为非boolean类型——报错,因为判断语句中只能输入boolean类型的参数
int a = 1;
int b = 2;
if(a=b){
    System.out.print("true");
}
else {
    System.out.print("false");
}

//方式2:赋值语句的参数为boolean类型——不报错
boolean flag1 = true;
boolean flag2 = false;
//分别执行下列四种场景,注意不要一次性执行,否则定义的"flag1 = true;flag2 = false;"会被覆盖,影响此次实验结果
//flag1=flag2
if(flag1=flag2){
    System.out.print("true");
}
else {
    System.out.print("false");//输出false
}
​
//flag2=flag2
if(flag2=flag2){
    System.out.print("true");
}
else {
    System.out.print("false");//输出false
}
​
//flag2=flag1
if(flag2=flag1){
    System.out.print("true");//输出true
}
else {
    System.out.print("false");
}
​
//flag1=flag1
if(flag1=flag1){
    System.out.print("true");//输出true
}
else {
    System.out.print("false");
}

由上面4种场景分别执行结果来看,得出结论:if判断语句中赋值语句的结果,取决于等号右边的值,等号右边是true则判断语句为true,等号右边是false则判断语句为false。while可证结论一致。

接下来看下输出语句中写赋值语句的结果:

//方式1:赋值语句的参数为非boolean类型
int a = 1;
int b = 2;
//分别执行下列四种场景,注意不要一次性执行,否则定义的"int a = 1;int b = 2;"会被覆盖,影响此次实验结果
System.out.print(a=b);//输出2
System.out.print(b=b);//输出2
System.out.print(b=a);//输出1
System.out.print(a=a);//输出1
//方式1:赋值语句的参数为boolean类型
boolean flag1 = true;
boolean flag2 = false;
//分别执行下列四种场景,注意不要一次性执行,否则定义的"flag1 = true;flag2 = false;"会被覆盖,影响此次实验结果
System.out.print(flag1=flag2);//输出false
System.out.print(flag2=flag2);//输出false
System.out.print(flag2=flag1);//输出true
System.out.print(flag1=flag1);//输出true

由上面4种场景分别执行结果来看,最终得出结论:

判断语句和输出语句中如果为赋值语句如a=b,最终结果取决于赋值语句等号右边的值