if(boo=false)与if(boo==false)? 因为boo=false后这个表达式的值事false,所以if条件为假,故而打出true. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 确实是挺奇怪的一件事。如果该为if(boo = true),则输出的是false。这岂不是说 if(boo=false)与if(boo==false)等效了吗?:)算了,别计较这些了,还是按规范的写吧。:) 楼上的 if (boo=true) 和 if(boo==false)这两者是完全的两个概念问题,并不等同!前者是在赋值等同于if (true)而后者是在进行boolean类型的比较等同于if (true==false),显然true==false的结果是false,所以间接等同于if (false) 同意楼上的,if(boo=false) 就等同于if(false); 对,楼上的说的有道理boo=false 就等于falseboo=true 就等于 true。 不以这样写吧,这样的话boo的值不就变了吗?如果别的地方也用这个标志呢? 我倒觉得应该这样理解:if(boo=false)就相当于:if(boo){}boo=false;因为先前boo已经等于true了所以if(boo)肯定成立拉,就是说if(boo=false)这个成立 执行完上面的程序boo就变为flase了,先判断后附值 if(boo=false)是先赋值后判断相当于boo = false;if (boo){} 楼上的弟兄说得不对,小弟试一试。 无论你是“boolean boo = true;if(boo=false) System.out.println("false");else System.out.println("true");”这样还是 boolean boo = true;if(boo=true) System.out.println("false");else System.out.println("true");输出的结果都是“true”!换一句话也就是说,无论你如何判断,都将输入同一个结果。具体的什么小弟就不知道了!希望与大家共同研究讨论这个问题。小弟非常之关注和!!!!!! 小弟有一大胆的猜测不知道通通不,不过努力的想总是不会错的吧! 可能是表达式有错,系统直接认为是错误!或者是当系统运行到if (boo=false) System.out.println("false");只给boo赋值为false,再判断,不过话又说回来了,给boo赋值后为假才打印出"true",不过我给boo赋值为真也不打印出"false"。这是为什么?小弟现在迷茫了,兄弟们救救我,HELP ME!!! ??????????????????????????????????????????????????????????????????????? 在if,while等命令后的()中是允许赋值的,boo = true 其实和 while((line=readLine(lineArr,ai))!=null){}中line 的 line=readLine(lineArr,ai)一样,是赋值语句。我认为编译时是将值先付给boo然后用boo的值作为判断的条件就像楼上playgb(溯缘)说得那样if(boo=false)相当于boo = false;if (boo){} if(boo=false)与if(boo==false)?第一种写法是先执行boo=false赋值语句,然后再判断boo的值,相当于: boo=false; ---> if(boo)显然,该语句永远返回false(相当于if(false))后者if(boo==false)是判断boo的值是否为false,是正确的写法!换句话说,“=”是赋值符号,“==”是等于符号! 如果你用的是java,很可能是高速缓存没有清空导致,编译前,先把前面编译好的类文件删除,再重新编译、运行,就应该可以了! 在IF语句中,不管boo=false还是boo=true,编译器无法解析该语句,返回的结果都是false,所以始终输出else的内容;如果是==则编译器能解析,执行相应支路语句. 谁说无法编译的啊,你的不知道是什么编译器来的你试试这两个程序:boolean boo = true;System.out.println(boo);if(boo=false) System.out.println("false");else System.out.println("true");System.out.println(boo);结果truetruefalse程序2:boolean boo = true;System.out.println(boo);if(boo=true) System.out.println("false");else System.out.println("true");System.out.println(boo);结果2:truefalsetrue说来好多次是先附值再判断拉,还在骗其他人,不信试试看! if(statement) 在java中是完全可以的!当然,该语句我还进行了实验,语法上没错误!而且我试验的结果也是正常的!问题应该是高速缓存或编译时编译器监测错误,没有将原来的.class文件覆盖,按我上面说的方法应该可以! 我的结果和楼上的完全一样agree jimok(Jim) 同志们何必那么测试这样来吧,就可以知道 boo = false;表达式的值为false,而boo = true;表达式的值为true. boolean boo = false; System.out.println(boo = true); System.out.println(boo = false); System.out.println(boo == true); System.out.println(boo == false);输出是turefalsefalsetrue其实这是java中为了免除象c++中的if(x = ...)这样的错误而实行的一种机制,每个表达式都有其值,如:"int = 2;"的值为2.所以你甚至可以写如下的式子: int i =2;i = i * (i = 3); 这个是程序的执行顺序问题,if(boo=false) 是先把false赋给boo变量,然后再判断,这个赋值的结果是false,所以就执行else的部分,就这么简单。 给俺看看吧 初学者的悲剧?? win2008下JAVA的问题 scjp题目 怎样用java列出系统盘符(比如说:C,D,E...) 连接数据库的问题(内有错误代码) java I/O类与包装器 applet下icon图片显示 如何设置程序退出码 请问在JBuilder6中如何使用外部导入的包?? 各位大侠如果我jdk源码能看懂大半,那我的java水平会怎样? 有谁知道用什么方法可以修改html中的<input type="file">的属性 求教文件上传中的分隔符问题
算了,别计较这些了,还是按规范的写吧。:)
前者是在赋值等同于if (true)而后者是在进行boolean类型的比较等同于if (true==false),显然true==false的结果是false
,所以间接等同于if (false)
boo=false 就等于false
boo=true 就等于 true。
如果别的地方也用这个标志呢?
if(boo=false)
就相当于:
if(boo){}
boo=false;
因为先前boo已经等于true了所以if(boo)肯定成立拉,就是说if(boo=false)这个成立
是先赋值后判断
相当于
boo = false;
if (boo)
{}
无论你是
“boolean boo = true;
if(boo=false) System.out.println("false");
else System.out.println("true");”
这样还是
boolean boo = true;
if(boo=true) System.out.println("false");
else System.out.println("true");输出的结果都是“true”!换一句话也就是说,无论你如何判断,都将输入同一个结果。具体的什么小弟就不知道了!希望与大家共同研究讨论这个问题。小弟非常之关注和!!!!!!
小弟有一大胆的猜测不知道通通不,不过努力的想总是不会错的吧!
可能是表达式有错,系统直接认为是错误!或者是当系统运行到
if (boo=false) System.out.println("false");
只给boo赋值为false,再判断,不过话又说回来了,给boo赋值后为假才打印出"true",不过我给boo赋值为真也不打印出"false"。这是为什么?小弟现在迷茫了,兄弟们救救我,HELP ME!!!
???????????????????????????????????????????????????????????????????????
boo = true 其实和 while((line=readLine(lineArr,ai))!=null){}中line 的 line=readLine(lineArr,ai)一样,是赋值语句。我认为编译时是将值先付给boo然后用boo的值作为判断的条件就像楼上playgb(溯缘)说得那样if(boo=false)
相当于
boo = false;
if (boo)
{}
你试试这两个程序:
boolean boo = true;
System.out.println(boo);
if(boo=false) System.out.println("false");
else System.out.println("true");
System.out.println(boo);
结果
true
true
false程序2:
boolean boo = true;
System.out.println(boo);
if(boo=true) System.out.println("false");
else System.out.println("true");
System.out.println(boo);
结果2:
true
false
true
说来好多次是先附值再判断拉,还在骗其他人,不信试试看!
当然,该语句我还进行了实验,语法上没错误!而且我试验的结果也是正常的!
问题应该是高速缓存或编译时编译器监测错误,没有将原来的.class文件覆盖,按我上面说的方法应该可以!
agree jimok(Jim)
boolean boo = false;
System.out.println(boo = true);
System.out.println(boo = false);
System.out.println(boo == true);
System.out.println(boo == false);
输出是
ture
false
false
true
其实这是java中为了免除象c++中的if(x = ...)这样的错误而实行的一种机制,每个表达式都有其值,如:"int = 2;"的值为2.
所以你甚至可以写如下的式子:
int i =2;
i = i * (i = 3);