A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /**
  2. 需求:关于if语句中使用x++,逻辑运算符时出现的一些问题。

  3. */

  4. //第一题
  5. class Demo1//定义一个类
  6. {
  7.         //主函数
  8.         public static void main(String[] args)
  9.         {
  10.                 int x=1,y=1;
  11.                 /*
  12.                 括号中的x先出去和2比较,结果为假,而后自增(这里涉及x++先自增后自增的问题)       

  13.                 括号中的y先自增1,在和2比较,结果为真
  14.                 false&true=false。

  15.                 */
  16.                 if(x++==2 & ++y==2)
  17.                 {
  18.                         //false&true=false,所以这个语句不会执行

  19.                         x=7;
  20.                 }
  21.                         System.out.println("x="+x+",y="+y);//x=2,y=2
  22.         }
  23. }



  24. class Demo2
  25. {
  26.         public static void main(String[] args)
  27.         {
  28.                 int x=1,y=1;
  29.                 /*
  30.                 括号中的x先出去和2比较,结果为假,而后自增,这时&&就短路了,所以不读右边
  31.                 y的值不变为1
  32.                        
  33.                 */
  34.                 if(x++==2 && ++y==2)
  35.                 {
  36.                         x=7;
  37.                 }
  38.                         System.out.println("x="+x+",y="+y);//x=2,y=1
  39.         }
  40. }


  41. class Demo3
  42. {
  43.         public static void main(String[] args)
  44.         {
  45.                 int x=1,y=1;
  46.                 /*
  47.                 括号中的x先出去和1比较,结果为真,而后自增值为2
  48.                 括号中的y先自增在出去和1比较,结果为假
  49.                 “|”特点:一边为真,结果为真
  50.                 这时if的执行语句执行,x值为7
  51.                
  52.                 */
  53.                 if(x++==1 | ++y==1)
  54.                 {
  55.                         x=7;
  56.                 }
  57.                         System.out.println("x="+x+",y="+y);//x=7,y=2
  58.         }
  59. }


  60. class Demo4
  61. {
  62.         public static void main(String[] args)
  63.         {
  64.                 int x=1,y=1;
  65.                 /*
  66.                 括号中的x先出去和1比较,结果为真,然后在自增,值为2
  67.                 “||”特点:当左边为true,右边不运算
  68.                 这时if执行语句运行x值为7
  69.                
  70.                 */
  71.                 if(x++==1 || ++y==1)
  72.                 {
  73.                         x=7;
  74.                 }
  75.                         System.out.println("x="+x+",y="+y);//x=7,y=1
  76.         }
  77. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

5 个回复

倒序浏览
点评的很详细,条件判断句在这里集中体现了。
回复 使用道具 举报
双&&还是有区别的,毕竟后面的不执行了。
回复 使用道具 举报
恩,这是一个容易让人混淆的点
回复 使用道具 举报
收藏了   
回复 使用道具 举报
还在基础中,没看懂,继续努力;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马