黑马程序员技术交流社区

标题: 有关if的语句问题 [打印本页]

作者: 踏雪风暴    时间: 2014-6-23 21:07
标题: 有关if的语句问题
本帖最后由 踏雪风暴 于 2014-6-24 10:26 编辑

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

这个题是有结果的,但我想知道为什么if(b=false)  这样可以的 ?
作者: 踏雪风暴    时间: 2014-6-23 21:08
本帖最后由 踏雪风暴 于 2014-6-23 21:09 编辑

对于for(b==false)  这样的我到是可以理解的
作者: dispensable    时间: 2014-6-23 22:02
- -看起来好怪 ,我没试过,不过要是我,会把 if(b=false) 写成  if(!b)   而且你说的有结果是什么意思?是说可以打印出结果吗?因为你if(){};没有大括号啊,不知对不对,随便回答一下,没电脑也没测试条件
作者: keep_moving    时间: 2014-6-23 22:09
楼主,因为b本来就是一个boolean型变量啊,它的取值只能是false或者true,==,>=,<=等运算符是判断表达式,结果也只能是false或者true,所以if后面的条件不论怎么写都只能是false或者true,只是表达方式不一样,楼主还需继续学习基础知识啊
作者: 踏雪风暴    时间: 2014-6-23 22:20
keep_moving 发表于 2014-6-23 22:09
楼主,因为b本来就是一个boolean型变量啊,它的取值只能是false或者true,==,>=, ...

好像是我的问题没有问明白,你说的我又似懂非懂,我想问的是if(b=false)  这个为什么是成立的,其中的 = 的作用是什么,赋值吗?还是什么
作者: 轻语。    时间: 2014-6-23 22:25
if(b=false)
括号里面赋值, 恒为假。
应该可以相当于    if(0)
作者: alive    时间: 2014-6-23 22:30
if(b=false)  就是把false赋值给b, 这里不是判断
作者: 215041631    时间: 2014-6-23 22:43
不是很清楚 ,求大神解释
作者: Designed    时间: 2014-6-23 22:49
我也是来学习的,,看看学习下!!!
作者: J.twt    时间: 2014-6-23 22:57
小弟刚刚学java,我觉得是if(b=false)这条语句是先见false的值赋值给boolean型变量b,然后在判断其值的真假
作者: 踏雪风暴    时间: 2014-6-24 00:15
伍叶竹 发表于 2014-6-23 22:25
if(b=false)
括号里面赋值, 恒为假。
应该可以相当于    if(0)

赞一个!
作者: m313786372    时间: 2014-6-24 04:32
赋值语句是有返回值的。对于java,返回值就是所赋的那个值:
b=false;这条赋值语句的返回值是false
b=ture;返回值是true

用System.out.println(b=true);还可以打印出来看。
作者: jiang_ming    时间: 2014-6-24 06:28
和while(true)是一样的,为了弄一个死循环
作者: 霜林醉zhx    时间: 2014-6-24 10:06
这就是一个条件判断,当if括号中的条件满足时,执行if语句,语法没问题
作者: Akm    时间: 2014-6-24 11:36
所以 为了防止这样的错误,  通常程序员会把false true 写到前边.  if(false=b) 这样编译器就会报错
作者: keep_moving    时间: 2014-6-24 12:26
踏雪风暴 发表于 2014-6-23 22:20
好像是我的问题没有问明白,你说的我又似懂非懂,我想问的是if(b=false)  这个为什么是成立的,其中的 =  ...

“=”的作用就是赋值,因为你把b定义成了一个boolean型变量,所以你可以把false赋给变量b
作者: 倪大大    时间: 2014-6-24 12:39
这个if(b=false)  先执行括号里的赋值语句.   b这时候等于false
  然后再判断if语句 if(b)
作者: 执笔梦    时间: 2014-6-24 21:41
其实就是个赋值,
作者: 導ぷ仙″兲蕐    时间: 2014-6-24 22:13
=是负值==是判断
作者: 踏雪风暴    时间: 2014-7-12 11:02
明白了。。
作者: itisdream    时间: 2014-7-12 17:10
这是赋值,为何不可以?
作者: 踏雪风暴    时间: 2014-7-12 18:01
ene en....................
作者: 沐子松/kf    时间: 2014-7-12 19:55
学习了~这个题很经典
作者: doubandddk    时间: 2014-7-14 11:29
b = false 这是一个赋值表达式表达式,将 false的值赋给b;而复制表达式的值等于“=”左边变量的值;
所以if(b = false)语句等价于语句: b = false; if(b);





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2