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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜天伟 中级黑马   /  2013-7-7 23:36  /  1837 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-8 14:57 编辑

boolean b=true;
if(b=false)
System.out.println("a");
打印结果是什么呢?为什么呢?
如果换成b的初始化值为false,而if(b=true)结果又是什么呢?

评分

参与人数 1黑马币 +1 收起 理由
杨兴庭 + 1

查看全部评分

13 个回复

倒序浏览
应该写if(b==false)或者if(b) 没有你这样写的
回复 使用道具 举报
if语句里放的是条件表达式,要不true,要不false,跟据你的代码来看,
boolean b=true;
//下边的打印语句,根本不会执行,这样写没意义
if(b=false)
     System.out.println("a");

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

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
是==不是= if()里要的是false或true,如果写if(b=false),那么括号里的值就是false,如果写if(b=true),那么括号里的值就是true,赋值什么就是什么
比如
int i = 1;
if((i =1) == 1)
sop("a");
输出的结果肯定是a

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
杜天伟 来自手机 中级黑马 2013-7-8 00:20:30
报纸
大家都在奋斗啊!
我是看到毕老师给的练习里边这么写的,问结果是什么?有点搞不清楚
回复 使用道具 举报
杜天伟 发表于 2013-7-8 00:20
大家都在奋斗啊!
我是看到毕老师给的练习里边这么写的,问结果是什么?有点搞不清楚 ...

第一个b被重新赋值为false,不执行下面的语句
第二个,执行一次打印语句。
这个属于毕老师娱乐效果,让我们熟悉一下if语句和赋值与判断的区别,实际过程中,应该没人这么干。
按毕老师说法,真这么干了,要么回火星要么看病去……;P
回复 使用道具 举报
毕老不是教你要这么写的
回复 使用道具 举报
杜天伟 来自手机 中级黑马 2013-7-8 08:33:25
8#
hx32 发表于 2013-7-8 00:37  第一个b被重新赋值为false,不执行下面的语句  第二个,执行一次打印语句。  这个属于毕老师娱乐效果,让我 ...

了解了解.我是在源代码里边看到的,视频里边没有。
回复 使用道具 举报
本帖最后由 HM张勇 于 2013-7-8 19:58 编辑

if(条件表达式)
    语句;

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

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

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

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


评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 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的值进行比较了,希望对楼主有所帮助

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
boolean b=true;
if(b=false)
System.out.println("a");
应该可以这样写的,编译运行也不会出错,这样就是为b赋值false再把b当做判断条件.
如果你把
if(b=false)
变成
if(b=true)
他就会打印a

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
杜天伟 来自手机 中级黑马 2013-7-8 11:53:00
12#
camml 发表于 2013-7-8 09:35  如果换成b的初始化值为false,而if(b=true)的话,代码应该是这样的话输出语句依然不会执行,如果换成这样的 ...

boolean b=false;

if(b=true)

System.out.println("a");
这个会执行的,我刚试了
回复 使用道具 举报
杜天伟 发表于 2013-7-8 11:53
boolean b=false;

if(b=true)

我已经修改了我的答案,请楼主在看一遍
回复 使用道具 举报
杜天伟 来自手机 中级黑马 2013-7-8 14:08:24
14#
camml 发表于 2013-7-8 11:59  我已经修改了我的答案,请楼主在看一遍

嗯,明白了.谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马