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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int x = 1,y=1;if(x++==2 & ++y==2){        x =7;}System.out.println("x="+x+",y="+y);//x=2,y=2

5 个回复

倒序浏览
自增“++”:
在变量前,则先自增再参与所在语句的运算
在变量后,则是先参加语句运算再进行自增

&运算符不管左边的运算结果为什么,右边的语句都会被执行
&&运算符则在左边运算结果为false时,右边语句将不被执行。

1、上面中if的条件语句(x++==2 & ++y==2)中的x++为在变量后的情况,应该先参与运算后才自增,++y则是先自增在参加运算
因此上面程序if中判断时参与(x==2&y==2) 的x、y值分别为x = 1,y=2,显然x==2为false,则if条件语句为false,因此{x = 7;}不执行
2、虽然上面的if条件语句中的x != 2,但是在运行完x++==2语句或,x自增了,x = 2;因为条件语句中使用的是&,因此不管前面的运行结果,++y == 2都会执行,因此y = 2
综上,所诉,x = 2,y = 2
回复 使用道具 举报
shewim 发表于 2015-3-8 15:28
自增“++”:
在变量前,则先自增再参与所在语句的运算
在变量后,则是先参加语句运算再进行自增

说得好详细,谢谢
回复 使用道具 举报
本帖最后由 cat73 于 2015-3-8 16:50 编辑
  1. int x = 1, y = 1;
  2. if(x++ == 2 & ++y == 2) {
  3.     x =7;
  4. }

  5. //x: 2, y: 2
  6. System.out.println("x: " + x + ", y: " + y);
复制代码

这样多好看
回复 使用道具 举报
“&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
所以在你的判断语句中虽然x++==2为false,但是++y还是要进行自加的,所以打印的结果x、y的值都是2
回复 使用道具 举报
shewim 发表于 2015-3-8 15:28
自增“++”:
在变量前,则先自增再参与所在语句的运算
在变量后,则是先参加语句运算再进行自增

厉害  学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马