if语句用法的坑
if语句后边没有花括号时执行体为紧跟if的那句语句
想法来源如下:
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean x=true,y=false;
short z=42;
//if(y==true)
if((z++==42)&&(y=true))z++;//z++==42为true【z先判断后执行加一变为43】,y=true为赋值语句直接赋值成功语句为true,所以整个if条件为true,执行if内执行体z++【z变为44】
if((x=false)||(++z==45))z++;//x=false为false,++z==45为true【z先执行加一变为45再与45做比较判断】所以整个if条件为true,执行if内执行体z++【z变为46】
System.out.println("z="+z);
}
}
/*运行结果为z=46*/
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean x=true,y=false;
short z=42;
if(y==true)//y==true为false,该if的执行体不执行【即if((z++==42)&&(y=true))z++;不执行】
if((z++==42)&&(y=true))z++;
if((x=false)||(++z==45))z++;
System.out.println("z="+z);
}
}
/*运行结果为z=43*/