在while用=而不用==为什么bool型的可以?

newgina 2004-12-17 05:50:10
boolean a=true;
boolean b=false;
while(a=b){
a=false;
}
int x = 1;
int y = 2;
while (x=y){
x=9;
}
第一个循环可以编译通过,而第二个却不行
为什么bool型的复值语句就被认可成bool的没有编译错误,而其他型的就不可以呢
...全文
238 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
freeask 2004-12-17
  • 打赏
  • 举报
回复
是向楼上两位所说的一样。如果你把第二个换成while(y=x)也会编译通过

RE:
会通过???
这是不可能得!!!!!!!
milu626 2004-12-17
  • 打赏
  • 举报
回复 1
“=”是赋值符号,“==”逻辑运算符。
两个数的比较要用“==”。但每个表达式都有一个值,赋值表达式也有。
用boolean值a=b时,表达式的值为boolean型,是while()表达式中要求的类型。
用其它类型值的时候表达式也就不是boolean型,所以不符合while()表达式的要求。所以编译通不过。
masse 2004-12-17
  • 打赏
  • 举报
回复
第一个执行过程是这样的:
boolean a=true;
boolean b=false;
然后a=b,最后a=false,
这样检测的时候看的就是a的值,也就是false

第二个是赋值语句
wuxd02 2004-12-17
  • 打赏
  • 举报
回复
是向楼上两位所说的一样。如果你把第二个换成while(y=x)也会编译通过
rainight 2004-12-17
  • 打赏
  • 举报
回复
第一个循环相当于
while(false){
....
}
当然没问题了。

第二个循环相当于
while(2){
....
}
这显然是不对的
tom2005 2004-12-17
  • 打赏
  • 举报
回复
a=b是赋值语句

也就是while(false)

62,635

社区成员

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

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