黑马程序员技术交流社区

标题: 一个关于boolean类型赋值的问题 [打印本页]

作者: 渠嘉树    时间: 2014-7-5 18:59
标题: 一个关于boolean类型赋值的问题
boolean b = true;
  if(b==false)   
  System.out.println("a");
  else if(b)
   System.out.println("b");
  else if(!b)
   System.out.println("c");
  else
   System.out.println("d");

上面第一个条件是不成立的,然后转入if(b),这句应该怎么理解?是if(b==true)吗 ?
它的输出结果就是b。
if(!b)的意思是b=false吗?

如果写成if(b=false)有结果吗?如果有,结果是?
我改成了b=false,执行了结果是c,该怎么理解?我不知道怎么到这一步的{:3_54:}可以讲解的仔细点吗?






作者: OCTSJimmy    时间: 2014-7-5 19:13
首先需要了解,
在if中,写了变量,但没有表达式,则默认判定变量是否为true,即:默认为变量==true,假如变量false那么就进入else。
然后需要了解:
! 为求反,其余的可以往首先上面套。

最后,判定时不能写成 变量=【true/false】 因为 =是赋值符号,必需写成 ==
作者: 渠嘉树    时间: 2014-7-5 19:17
OCTSJimmy 发表于 2014-7-5 19:13
首先需要了解,
在if中,写了变量,但没有表达式,则默认判定变量是否为true,即:默认为变量==true,假如 ...

我用myeclipse写的if(b=false)没有报错,为什么?还有运行结果的
作者: OCTSJimmy    时间: 2014-7-5 19:20
本帖最后由 OCTSJimmy 于 2014-7-5 19:22 编辑
渠嘉树 发表于 2014-7-5 19:17
我用myeclipse写的if(b=false)没有报错,为什么?还有运行结果的

其实:
if(b=false)
{
System.out.println(b);
}
else
{
System.out.println("else:" + b);
}

这个会输出:
"else:false"
如此,可了解?也即是说:
if(b=false)
做了这些操作:
1、赋值b为false
2、判定b==true
所以实际上这是等价于:
if((b=false)==false)的


作者: 渠嘉树    时间: 2014-7-5 19:25
OCTSJimmy 发表于 2014-7-5 19:20
其实:
if(b=false)
{

恩恩  这样就明白了 嘿嘿 谢谢啦{:3_53:}
作者: OCTSJimmy    时间: 2014-7-5 19:27
渠嘉树 发表于 2014-7-5 19:25
恩恩  这样就明白了 嘿嘿 谢谢啦

不客气,一起研究,一起进步嘛。
作者: 渠嘉树    时间: 2014-7-5 19:32
OCTSJimmy 发表于 2014-7-5 19:27
不客气,一起研究,一起进步嘛。

恩恩 嘿嘿
作者: Blake    时间: 2014-7-5 23:16
if(b)意思就是 "如果b是true"或“如果b为真”;if(!b)意思是:“如果!b为true”或者理解为“如果b为false”则执行




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