社区
Java SE
帖子详情
if(boo=false)与if(boo==false)?
JackJia
2002-09-02 10:06:10
程序段:
boolean boo = true;
if(boo=false) System.out.println("false");
else System.out.println("true");
输出true,为何可以if(boo=false)?
...全文
1320
24
打赏
收藏
if(boo=false)与if(boo==false)?
程序段: boolean boo = true; if(boo=false) System.out.println("false"); else System.out.println("true"); 输出true,为何可以if(boo=false)?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
guo_com
2002-09-03
打赏
举报
回复
在IF语句中,不管boo=false还是boo=true,编译器无法解析该语句,返回的结果都是false,所以始终输出else的内容;如果是==则编译器能解析,执行相应支路语句.
weny666
2002-09-03
打赏
举报
回复
如果你用的是java,很可能是高速缓存没有清空导致,编译前,先把前面编译好的类文件删除,再重新编译、运行,就应该可以了!
weny666
2002-09-03
打赏
举报
回复
1
if(boo=false)与if(boo==false)?
第一种写法是先执行boo=false赋值语句,然后再判断boo的值,相当于:
boo=false; ---> if(boo)
显然,该语句永远返回false(相当于if(false))
后者if(boo==false)是判断boo的值是否为false,是正确的写法!
换句话说,“=”是赋值符号,“==”是等于符号!
p_tangnj
2002-09-03
打赏
举报
回复
在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)
{}
qqf
2002-09-03
打赏
举报
回复
各位!都说是先赋值后判断,不过小弟“以身试法”不成功!希望大家继续努力!搞懂这个东东,我看现在大家好像好迷糊了,和小弟一样,希望大家一起去找答案。人多力量大嘛!呵呵呵……
qqf
2002-09-03
打赏
举报
回复
楼上的弟兄说得不对,小弟试一试。
无论你是
“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!!!
???????????????????????????????????????????????????????????????????????
playgb
2002-09-03
打赏
举报
回复
if(boo=false)
是先赋值后判断
相当于
boo = false;
if (boo)
{}
Jim_OU
2002-09-03
打赏
举报
回复
不好意思,测试后原来是先附值后判断
Jim_OU
2002-09-03
打赏
举报
回复
执行完上面的程序boo就变为flase了,先判断后附值
Jim_OU
2002-09-03
打赏
举报
回复
我倒觉得应该这样理解:
if(boo=false)
就相当于:
if(boo){}
boo=false;
因为先前boo已经等于true了所以if(boo)肯定成立拉,就是说if(boo=false)这个成立
iamsoloist
2002-09-03
打赏
举报
回复
不以这样写吧,这样的话boo的值不就变了吗?
如果别的地方也用这个标志呢?
wjmmml
2002-09-03
打赏
举报
回复
对,楼上的说的有道理
boo=false 就等于false
boo=true 就等于 true。
hjt3328
2002-09-03
打赏
举报
回复
同意楼上的,if(boo=false) 就等同于if(false);
teaky2002
2002-09-03
打赏
举报
回复
这个是程序的执行顺序问题,if(boo=false) 是先把false赋给boo变量,然后再判断,这个赋值的结果是false,所以就执行else的部分,就这么简单。
CatLuDn
2002-09-03
打赏
举报
回复
这其实也可以从运算符优先级来讨论的,关于运算符优先级和表达式的组合运算过程大家就去看看资料吧.
teddybear_xb
2002-09-03
打赏
举报
回复
楼上的 if (boo=true) 和 if(boo==false)这两者是完全的两个概念问题,并不等同!
前者是在赋值等同于if (true)而后者是在进行boolean类型的比较等同于if (true==false),显然true==false的结果是false
,所以间接等同于if (false)
CatLuDn
2002-09-03
打赏
举报
回复
各位想想吧!
CatLuDn
2002-09-03
打赏
举报
回复
同志们何必那么测试这样来吧,就可以知道 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);
输出是
ture
false
false
true
其实这是java中为了免除象c++中的if(x = ...)这样的错误而实行的一种机制,每个表达式都有其值,如:"int = 2;"的值为2.
所以你甚至可以写如下的式子:
int i =2;
i = i * (i = 3);
weny666
2002-09-03
打赏
举报
回复
我的结果和楼上的完全一样
agree jimok(Jim)
weny666
2002-09-03
打赏
举报
回复
if(statement) 在java中是完全可以的!
当然,该语句我还进行了实验,语法上没错误!而且我试验的结果也是正常的!
问题应该是高速缓存或编译时编译器监测错误,没有将原来的.class文件覆盖,按我上面说的方法应该可以!
加载更多回复(4)
浏览图片代码-查看某个文件夹中的图片,显示在网页中
{
boo
lean
boo
=
false
; if(name.endsWith(".jpg")||name.endsWith(".JPG"))
boo
=true; return
boo
; } } public class Play { int imageNumber=0,max; String pictureName[],playImage; public Play() { File...
数据结构课程设计图书管理系统.doc
} if(库中没有所要查找得书) 返回值false; } void Buy(
Boo
k &boo, char BuyNum[])/*采编入库*/ { if(书库中有此书) { 总库存加1; 现库存加1; } if(书库中无此书) { for(i=total;i〉mid&&total...
数据结构课程设计图书管理系统(1).doc
} if(库中没有所要查找的书) 返回值
false
; } void Buy(
Boo
k &
boo
, char BuyNum[])/*采编入库*/ { if(书库中有此书) { 总库存加1; 现库存加1; } if(书库中无此书) { for(i=total;i>mid&&total;i--)/*将新采购的书插...
JavaScript中奇葩的假值示例应用
通常在以下语句结构中需要判断真假 if分支语句 while循环语句 for里的第二个语句 如 代码如下: if (
boo
) { // do something } while (
boo
) { // do something } JavaScript中有6个值为“假”,这六个值是
false
null...
重生之路——java学习3
整型 :byte(1字节 = 8bit 表数范围-128 ~ 127) ,short(2字节) , int(4字节),long(8字节) 浮点型 : float(4字节),double(8字节) 字符型 :char(2)字节 布尔类型 :
boo
lean(只有两个值true和
false
一般忽略...
Java SE
62,616
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章