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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 超级小鱼 中级黑马   /  2016-1-12 21:28  /  946 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天考试做题
  1. boolean b=true;
  2. if(b=false)
  3. {
  4.         System.out.println("a");
  5. }
  6. else if(b)
  7. {
  8.         System.out.println("b");       
  9. }
  10. else if(!b)
  11. {
  12.         System.out.println("c");
  13. }
  14. else
  15. {
  16.         System.out.println("d");
  17. }

复制代码

答案为什是c呢,为什么不输出b,是在不太懂了

6 个回复

倒序浏览
if语句只有在判断语句也就是()内为true时才执行if中的执行语句~~
回复 使用道具 举报
擎天柱 来自手机 中级黑马 2016-1-12 22:51:27
藤椅
第一个条件是在赋值吗?!
回复 使用道具 举报
楼主请看你代码第二行,此处 b = false将b的值变为了false,所以在第六行的时候实际是if(false),所以不执行第八行,
同理,第10行的时候,b是false,!b就是true,所以就输出C咯,这是个坑,以后记住
回复 使用道具 举报
擎天柱 发表于 2016-1-12 22:51
第一个条件是在赋值吗?!

如果他说 b = false 当然是赋值  参考:b == false 这才是一个需要判断的语句 而这里如果是b==false的话判断结果还是个false,所以也不执行里面的执行语句., 而b=false就相当于判断条件直接是false了~
回复 使用道具 举报
给你加了注释不知道你能看懂不
  1. class Test {
  2.         public static void main (String[] args) {

  3.                 boolean b=true;
  4.                 if(b=false) {//这句是赋值,赋值之后b是false
  5.                         System.out.println("a");
  6.                 } else if(b) {//b是false不进入循环
  7.                         System.out.println("b");        
  8.                 } else if(!b) {//!b是true
  9.                         System.out.println("c");
  10.                 } else {
  11.                         System.out.println("d");
  12.                 }
  13.         }
  14. }
复制代码
回复 使用道具 举报
果然是个坑
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马