A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 踏雪风暴 中级黑马   /  2014-6-23 21:07  /  2517 人查看  /  23 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 踏雪风暴 于 2014-6-24 10:26 编辑

boolean b = true;
if(b=false)
System.out.println("a");

这个题是有结果的,但我想知道为什么if(b=false)  这样可以的 ?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

23 个回复

正序浏览
b = false 这是一个赋值表达式表达式,将 false的值赋给b;而复制表达式的值等于“=”左边变量的值;
所以if(b = false)语句等价于语句: b = false; if(b);
回复 使用道具 举报
学习了~这个题很经典
回复 使用道具 举报
ene en....................
回复 使用道具 举报
这是赋值,为何不可以?
回复 使用道具 举报
明白了。。
回复 使用道具 举报
導ぷ仙″兲蕐 来自手机 中级黑马 2014-6-24 22:13:41
19#
=是负值==是判断来自: iPhone客户端
回复 使用道具 举报
其实就是个赋值,
回复 使用道具 举报
这个if(b=false)  先执行括号里的赋值语句.   b这时候等于false
  然后再判断if语句 if(b)
回复 使用道具 举报
踏雪风暴 发表于 2014-6-23 22:20
好像是我的问题没有问明白,你说的我又似懂非懂,我想问的是if(b=false)  这个为什么是成立的,其中的 =  ...

“=”的作用就是赋值,因为你把b定义成了一个boolean型变量,所以你可以把false赋给变量b
回复 使用道具 举报
Akm 黑马帝 2014-6-24 11:36:34
15#
所以 为了防止这样的错误,  通常程序员会把false true 写到前边.  if(false=b) 这样编译器就会报错
回复 使用道具 举报
这就是一个条件判断,当if括号中的条件满足时,执行if语句,语法没问题
回复 使用道具 举报
和while(true)是一样的,为了弄一个死循环
回复 使用道具 举报
赋值语句是有返回值的。对于java,返回值就是所赋的那个值:
b=false;这条赋值语句的返回值是false
b=ture;返回值是true

用System.out.println(b=true);还可以打印出来看。
回复 使用道具 举报
伍叶竹 发表于 2014-6-23 22:25
if(b=false)
括号里面赋值, 恒为假。
应该可以相当于    if(0)

赞一个!
回复 使用道具 举报
J.twt 中级黑马 2014-6-23 22:57:27
10#
小弟刚刚学java,我觉得是if(b=false)这条语句是先见false的值赋值给boolean型变量b,然后在判断其值的真假
回复 使用道具 举报
我也是来学习的,,看看学习下!!!
回复 使用道具 举报
不是很清楚 ,求大神解释
回复 使用道具 举报
alive 中级黑马 2014-6-23 22:30:03
7#
if(b=false)  就是把false赋值给b, 这里不是判断
回复 使用道具 举报
if(b=false)
括号里面赋值, 恒为假。
应该可以相当于    if(0)

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报 2 0
12下一页
您需要登录后才可以回帖 登录 | 加入黑马