提问

happy_zwc4 2008-01-28 05:42:57
package demo;

public class TestOperator{
public static void main(String[] args){
int source1=3;
int source2=3;
if(source1>6&&source1++<2){}
System.out.println("source1: "+source1);

if(source2>6&source2++<2){}
System.out.println("source2: "+source2);
}
}

为什么一个的结果是3
一个的结果是4

ps:&&为且而&为位操作符
&&是如果前一部份不成立,后一部分就不用执行,&是前一部分不成立,后一部分都要执行
对不对?

...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuqianqian 2008-01-29
  • 打赏
  • 举报
回复
两个结果应该都是3吧,&&是前一个条件不成立,后面的条件就不用看了,但&是两个条件都要进行一次判断,不过&&和&最后出来的结果应该是一样的.
bain2587 2008-01-29
  • 打赏
  • 举报
回复
ps:&&为且而&为位操作符
&&是如果前一部份不成立,后一部分就不用执行,&是前一部分不成立,后一部分都要执行
对不对?
楼主说的完全正确
public class TestOperator{
public static void main(String[] args){
int source1=3;
int source2=3;
//如果if里的条件为false,就不执行大括号里的空语句,但是因为是&&,所以if里的条件判断语句都会执行
if(source1> 6&&source1++ <2){}
//因为System在大扩括号外,source1在if条件判断中已经被使用过一次,所以source1自加为4
System.out.println("source1: "+source1);

//同上,if条件判断语句第一个'source2> 6',source2=3大于6为false,因为是&,所以if条件语句的第二
//个条件判断语句'source2++ <2'就不执行了
if(source2> 6&source2++ <2){}
//因为System在大扩括号外,source2在if条件判断中没有被使用,所以source2还没有自加,还是为3
System.out.println("source2: "+source2);
}
}


cangyue87 2008-01-28
  • 打赏
  • 举报
回复
回1楼,楼主代码还算比较清晰吧,就是实验两种逻辑与操作的区别.
cangyue87 2008-01-28
  • 打赏
  • 举报
回复
在if的条件中"短路与&&"和"逻辑与&"运算功能相似,都是完成与操作,区别正如楼主所说:&&操作一但前面的判断结果为false,就不再执行后面判断的代码.
if(source1> 6&&source1++ <2){}

先执行代码source1>6,结果为false(3>6的结果),这时代码不再做source1++<2这一步,最后source1值为3

if(source2> 6&source2++ <2){}  

先执行代码source2>6,结果为false(3>6的结果),然后再做后一个判断source2++<2,最后结果为4
yami251139 2008-01-28
  • 打赏
  • 举报
回复
&& = and & 我不知道。。
if(source1> 6&&source1++ <2){} -----條件語句寫了,執行程序沒寫
System.out.println("source1: "+source1);
又沒執行。。。當然是3
if(source2> 6&source2++ <2){}
System.out.println("source2: "+source2);
source2> 6&source2++ <2這句話就是source2+=source2
你是想表現source2> 6或者source2++ <2 應該用||
完全看不懂你想干什么。。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧