黑马程序员技术交流社区
标题:
纠结的简单的问题,你们上来看看这二个有什么区别!
[打印本页]
作者:
飞舞❤心动
时间:
2012-5-11 09:51
标题:
纠结的简单的问题,你们上来看看这二个有什么区别!
1.以下代码运行后得到的输出结果: Not equal! 10
int output=10;
boolean b1 = false;
if((b1==true) && ((output+=10)==20)){
System.out.println(“We are equal ”+output);
}
else{
System.out.println(“Not equal! ”+output);
}
2.以下代码运行后的输出结果: We are equal 20
int output=10;
boolean b1 = false;
if((b1=true) && ((output+=10)==20)){
System.out.println(“We are equal ”+output);
}
else{
System.out.println(“Not equal! ”+output);
}
那位牛人解释一下!
作者:
魏涞
时间:
2012-5-11 10:00
int output=10;
boolean b1 = false;
if((b1==true) && ((output+=10)==20)){
//这里的b1==true是一个逻辑运算是否相等比较,这里返回的是一个false,if条件判断为false
System.out.println(“We are equal ”+output);
}
else{
System.out.println(“Not equal! ”+output);
}
2.以下代码运行后的输出结果: We are equal 20
int output=10;
boolean b1 = false;
if((b1=true) && ((output+=10)==20)){
//这里的b1=true是一个赋值运算,if条件判断为true
System.out.println(“We are equal ”+output);
}
else{
System.out.println(“Not equal! ”+output);
}
作者:
李啸
时间:
2012-5-11 10:04
int output=10;
boolean b1 = false;
if((b1==true) && ((output+=10)==20)){//&& 短路或 b1==true条件不成立 不进入if中判断条件会执行到所以会执行到else中代码
System.out.println(“We are equal ”+output);
}
else{
System.out.println(“Not equal! ”+output);
}
2.以下代码运行后的输出结果: We are equal 20
int output=10;
boolean b1 = false;
if((b1=true) && ((output+=10)==20)){//你b1直接等于true后边条件不做判断直接进入if语句
System.out.println(“We are equal ”+output);
}
else{
System.out.println(“Not equal! ”+output);
}
作者:
程旦
时间:
2012-5-11 10:05
楼上正解
作者:
谭景宾
时间:
2012-5-11 10:07
==与=的问题:
if((b1==true) && ((output+=10)==20)) //,这里的b1==true只要不满足就不再判断(output+=10)==20),所以为Not equal! 10
if((b1=true) && ((output+=10)==20)) //这的b1=true只要不满足,依然会去判断(output+=10)==20,这时第一个条件为假,第二个条件为真所以为We are equal 20
简单的说如果有多个条件:=就是,第一个条件为false还是true,都会去判断下一个条件。
==就是,第一个条件只要为true,就停止判断。
作者:
谭景宾
时间:
2012-5-11 10:09
应该是:==就是,第一个条件只要为false,就停止判断。
作者:
小小企鹅
时间:
2012-5-11 10:42
if(b1=true) 是将b1赋值为true,返回1;if(b1==true) 返回0.
作者:
杨鹏
时间:
2012-5-11 11:18
这是运算符执行的流程问题。
if((b1==true) && ((output+=10)==20))这个代码中有两个要注意的问题:
(1)b1==true这是一个判断语句其返回结果为一个boolean类型的数据。因为b1之前的值是false,所以这条语句返回的值是false.
(2) && 这个符号逻辑短路与,两边连接的是boolean类型的数据,只有两边的值是true整个"&&"表达式都会返回ture,只有一个为false,其结果就是会是false。它有一个特点:当&&的左边为false时,&&的右边表达式是不执行的。
第一种情况:因为b1==true返回的是false,所以整个(b1==true) && ((output+=10)==20)表达式返回的是false且"(output+=10)==20"表达式也没有得到执行,这条语句判断下的语句块就不会执行,所以结果就是: Not equal! 10。
第二种情况:b1=true这是一个赋值语句,返回的值自然就成了true;output+=10相当于是output=output+10结果是20,那么((output+=10)==20)表达式返回的是true,这样&&两边都是ture,整个(b1=true) && ((output+=10)==20)表达式返回值就是ture。结果自然就是: We are equal 20。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2