黑马程序员技术交流社区

标题: 毕老师if练习中看到的 [打印本页]

作者: 杜天伟    时间: 2013-7-7 23:36
标题: 毕老师if练习中看到的
本帖最后由 杨兴庭 于 2013-7-8 14:57 编辑

boolean b=true;
if(b=false)
System.out.println("a");
打印结果是什么呢?为什么呢?
如果换成b的初始化值为false,而if(b=true)结果又是什么呢?
作者: 王靖远    时间: 2013-7-7 23:41
应该写if(b==false)或者if(b) 没有你这样写的
作者: 哪颗最亮的星星    时间: 2013-7-7 23:50
if语句里放的是条件表达式,要不true,要不false,跟据你的代码来看,
boolean b=true;
//下边的打印语句,根本不会执行,这样写没意义
if(b=false)
     System.out.println("a");

如果初始化为false,在条件表达式里赋值为true的话,执行一次打印语句。

作者: denghui1010    时间: 2013-7-8 00:02
是==不是= if()里要的是false或true,如果写if(b=false),那么括号里的值就是false,如果写if(b=true),那么括号里的值就是true,赋值什么就是什么
比如
int i = 1;
if((i =1) == 1)
sop("a");
输出的结果肯定是a
作者: 杜天伟    时间: 2013-7-8 00:20
大家都在奋斗啊!
我是看到毕老师给的练习里边这么写的,问结果是什么?有点搞不清楚
作者: hx32    时间: 2013-7-8 00:37
杜天伟 发表于 2013-7-8 00:20
大家都在奋斗啊!
我是看到毕老师给的练习里边这么写的,问结果是什么?有点搞不清楚 ...

第一个b被重新赋值为false,不执行下面的语句
第二个,执行一次打印语句。
这个属于毕老师娱乐效果,让我们熟悉一下if语句和赋值与判断的区别,实际过程中,应该没人这么干。
按毕老师说法,真这么干了,要么回火星要么看病去……;P
作者: 枫儿    时间: 2013-7-8 07:35
毕老不是教你要这么写的
作者: 杜天伟    时间: 2013-7-8 08:33
hx32 发表于 2013-7-8 00:37  第一个b被重新赋值为false,不执行下面的语句  第二个,执行一次打印语句。  这个属于毕老师娱乐效果,让我 ...

了解了解.我是在源代码里边看到的,视频里边没有。
作者: HM张勇    时间: 2013-7-8 08:42
本帖最后由 HM张勇 于 2013-7-8 19:58 编辑

if(条件表达式)
    语句;

if语句中,当条件表达式为真时,就会执行语句。表达式为假时,就不执行语句。

b=false  这句话的意思是把false这个值赋值给b,此时b的值为false,故不会执行语句。

=是赋值的意思,把等号右边的值赋给左边的变量。
==是等于的意思,判断左右两边的值是否相等。

如果你的真实意思是想判断b的值是否为false的话,就写成b==false
如果你的真实意思是想把false的值赋给b的话,就写成b=false



作者: camml    时间: 2013-7-8 09:35
本帖最后由 camml 于 2013-7-8 11:58 编辑

  1. //将b的值赋值为true
  2. boolean b=true;
  3. //判断语句中条件表达式b=false为假
  4. //所以该输出语句不会执行
  5. if(b=false)
  6. System.out.println("a");
复制代码
如果换成b的初始化值为false,而if(b=true)的话,代码应该是
  1. boolean b=false;
  2. if(b=true)
  3. System.out.println("a");
复制代码
这样的话输出语句依然会执行,如果是if(b==true)的话,是不会执行的,如果换成这样的代码
  1. boolean b=true;
  2. if(b=true)
  3. System.out.println("a");
复制代码
就会执行输出语句,打印结果为a
判断语句中,无论b之前被赋予了什么值,只要是if(b=true),下面的语句都会执行;如果是if(b==true)的话,就要和被赋予的b的值进行比较了,希望对楼主有所帮助

作者: 王广亚    时间: 2013-7-8 10:10
boolean b=true;
if(b=false)
System.out.println("a");
应该可以这样写的,编译运行也不会出错,这样就是为b赋值false再把b当做判断条件.
如果你把
if(b=false)
变成
if(b=true)
他就会打印a
作者: 杜天伟    时间: 2013-7-8 11:53
camml 发表于 2013-7-8 09:35  如果换成b的初始化值为false,而if(b=true)的话,代码应该是这样的话输出语句依然不会执行,如果换成这样的 ...

boolean b=false;

if(b=true)

System.out.println("a");
这个会执行的,我刚试了
作者: camml    时间: 2013-7-8 11:59
杜天伟 发表于 2013-7-8 11:53
boolean b=false;

if(b=true)

我已经修改了我的答案,请楼主在看一遍
作者: 杜天伟    时间: 2013-7-8 14:08
camml 发表于 2013-7-8 11:59  我已经修改了我的答案,请楼主在看一遍

嗯,明白了.谢谢




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