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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

xiaofeng

中级黑马

  • 黑马币:6

  • 帖子:35

  • 精华:0

© xiaofeng 中级黑马   /  2014-2-24 20:26  /  1161 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于if语句,验证输出结果是c,if后面不是跟条件表达式么?还能赋值?
  1. class Demo01 {
  2.         public static void main(String[] args) {
  3.                 boolean b=true;
  4.                 if(b=false){//这里是把false赋值给b 了?
  5.                 System.out.println("a");
  6.                 }else if(b){
  7.                 System.out.println(b);       
  8.                 }else if(!b){
  9.                 System.out.println("c");
  10.                 }else
  11.                 System.out.println("d");
  12.         }
  13. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

8 个回复

倒序浏览
可以写,输出的结果是c,这种题估计要检查细心程度什么的,实际编程感觉没有什么意义
回复 使用道具 举报
if(b=false)    // 把false赋值给b , 因为 if(false)为假,则执行下面语句,将判断表达式写成成赋值语句了,那语句就出现逻辑错误了,如if(a=1)表达式a=1一直为真,因此无需判断。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
灰太狼爱平底锅1 发表于 2014-2-24 20:51
if(b=false)    // 把false赋值给b , 因为 if(false)为假,则执行下面语句,将判断表达式写成成赋值语句 ...

是判断b不等于false之后再赋值给b是吧?
回复 使用道具 举报
灰太狼爱平底锅1 发表于 2014-2-24 20:51
if(b=false)    // 把false赋值给b , 因为 if(false)为假,则执行下面语句,将判断表达式写成成赋值语句 ...

还是直接false赋值给b 之后条件判断为false然后执行下面的语句?
回复 使用道具 举报
if里边写的只是个条件,并非真正意义的吧b改为了false,条件现在为false,而真正的b是true,同样第6行也是条件为false,而真正作判断的b是true,结果自然是C

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
楼主你的问题在于 if(b=false)你把判断语句用错了,布朗型数据本身就是判断语句,里面符号因改写成 if(b==false)
否则就是一个赋值运算了。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
if后面接条件表达式 这个条件表达式的结果为 ture 或者 false  你这里直接把结果写上去了,,  不过一般都不这样写、、、比较没意义。。
  1. class Demo01 {
  2.         public static void main(String[] args) {
  3.                 boolean b=true;
  4.                 if(b=false){//这里是把false赋值给b 了?  这里是把false赋值给b了。 if(b=false)语句代表的就是
  5.                 System.out.println("a");      //false不满足这个if语句。
  6.                 }else if(b){
  7.                 System.out.println(b);        
  8.                 }else if(!b)//  !b代表的结果为真  满足条件 执行这句、
  9.                 {
  10.                 System.out.println("c");
  11.                 }else
  12.                 System.out.println("d");
  13.         }
  14. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
朱神必 + 2

查看全部评分

回复 使用道具 举报
关于if语句,验证输出结果是c,if后面不是跟条件表达式么?还能赋值?

楼主是想问,if(boolean表达式)表达式的类型?
其中,括号内为boolean表达式,即表达式的结果必为boolean类型
b=false赋值表达式,因为b本身是boolean类型,且赋值后为boolean
如果存在这样,int b = 0; if(b =1) 此时虽然也是赋值表达式,但是b为整型,不符合if的要求,会出现:
不兼容的类型
找到:int
需要:boolean

注意,这是与C语言的区别(标准C语言中并没有关于bool的定义,可以借助int型表示)。
综上,不是所有的赋值表达式都能作为if的表达式!
总之,if(表达式必须有boolean类型的结果),并且只要有boolean类型的返回结果即可。例如,返回值类型为boolean的函数调用:if(func())

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马