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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int x = 1,y = 1;

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


int x = 1,y = 1;

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

7 个回复

倒序浏览
x++是先使用x然后在自加,++y是先自加然后在使用
第一个if语句块用了&,无论&左边的结果是什么右边的都会继续计算
第二个if语句块使用了&&,如果左边是true则继续计算右边的,如果左边的是false则右边的在不参与计算。
回复 使用道具 举报
&&与&两运算的区别:
&&如果左边为假,右边就不进行判断。
&不管左边是否为假,右边都进行判断。
楼主知道这点应该就知道结果不同的原因了、
回复 使用道具 举报
你这个是一个程序还是两个程序啊?如果是一个的话,下面就不用再定义int x = 1,y=1了...  

如果是一个程序的话,当输出第一个x和y的时候,它们的值就已经是变化后的值了,
所以第一个输出之后x,y的值分别等于2,下面的x和y初始值就是2了吧,所以下面x和y都是3...

个人见解。。{:soso_e197:}
回复 使用道具 举报
注意区别单与(&)和双与(&&)

捕获.JPG (52.12 KB, 下载次数: 0)

捕获.JPG
回复 使用道具 举报
第一个流程:
1. x==2  返回 false
2. x=x+1   得到 x = 2;
3  y=y+1   得到 y = 2;
4  y==2  返回 true
5. if(false&true)  得到 false
6. 打印 x=2,y=2;


第二个流程:
1. x==2  返回 false
2. x=x+1   得到 x = 2;
3. if(false&&这里不好执行) 得到false;
6. 打印 x=2,y=1;
回复 使用道具 举报
这个问题考了两个方面的知识:一、x++ 与 ++x的区别; 二、按位与“&”和逻辑与“&&”的区别;楼上的已经回答得的很完善了
回复 使用道具 举报
建议把第二天和第三天的学扎实,需要记忆的细节和容易混乱的东西很多。打好基础后面才能学的轻松。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马