- /**
- 需求:关于if语句中使用x++,逻辑运算符时出现的一些问题。
- */
- //第一题
- class Demo1//定义一个类
- {
- //主函数
- public static void main(String[] args)
- {
- int x=1,y=1;
- /*
- 括号中的x先出去和2比较,结果为假,而后自增(这里涉及x++先自增后自增的问题)
- 括号中的y先自增1,在和2比较,结果为真
- false&true=false。
- */
- if(x++==2 & ++y==2)
- {
- //false&true=false,所以这个语句不会执行
- x=7;
- }
- System.out.println("x="+x+",y="+y);//x=2,y=2
- }
- }
- class Demo2
- {
- public static void main(String[] args)
- {
- int x=1,y=1;
- /*
- 括号中的x先出去和2比较,结果为假,而后自增,这时&&就短路了,所以不读右边
- y的值不变为1
-
- */
- if(x++==2 && ++y==2)
- {
- x=7;
- }
- System.out.println("x="+x+",y="+y);//x=2,y=1
- }
- }
- class Demo3
- {
- public static void main(String[] args)
- {
- int x=1,y=1;
- /*
- 括号中的x先出去和1比较,结果为真,而后自增值为2
- 括号中的y先自增在出去和1比较,结果为假
- “|”特点:一边为真,结果为真
- 这时if的执行语句执行,x值为7
-
- */
- if(x++==1 | ++y==1)
- {
- x=7;
- }
- System.out.println("x="+x+",y="+y);//x=7,y=2
- }
- }
- class Demo4
- {
- public static void main(String[] args)
- {
- int x=1,y=1;
- /*
- 括号中的x先出去和1比较,结果为真,然后在自增,值为2
- “||”特点:当左边为true,右边不运算
- 这时if执行语句运行x值为7
-
- */
- if(x++==1 || ++y==1)
- {
- x=7;
- }
- System.out.println("x="+x+",y="+y);//x=7,y=1
- }
- }
复制代码 |