黑马程序员技术交流社区

标题: =和==的区别,下面这个求讲解 [打印本页]

作者: 董志立    时间: 2015-3-15 20:14
标题: =和==的区别,下面这个求讲解
  1. boolean b = true;

  2. if(b=false)  
  3.         System.out.println("a");
  4. else if(b)
  5.         System.out.println("b");
  6. else if(!b)
  7.         System.out.println("c");
  8. else
  9.         System.out.println("d");
  10.        

  11. ---------------------------------------------------
复制代码
这个题目中为什么结果是c呢?如果是if(b==false)那么结果就是b这个倒是理解!。。




作者: Shey    时间: 2015-3-15 20:23
  1. b=false
复制代码

是把false赋值给b,b的值就是false啦
作者: 董志立    时间: 2015-3-15 20:25
Shey 发表于 2015-3-15 20:23
是把false赋值给b,b的值就是false啦

哦哦,但是if(b=false)为什么执行了?能够详细说明一下吗?
作者: kkqisheng    时间: 2015-3-15 20:31
=号是赋值 ==号则是判断两边是否相等
作者: 179407246    时间: 2015-3-15 20:33
这个题的答案是B吧
作者: 董志立    时间: 2015-3-15 20:33
kkqisheng 发表于 2015-3-15 20:31
=号是赋值 ==号则是判断两边是否相等

哦哦,那个if(b=false)怎么执行了,b赋值后成为了false,那么下面为什么不执行System.out.println("a")呢!;
作者: Shey    时间: 2015-3-15 20:34
董志立 发表于 2015-3-15 20:25
哦哦,但是if(b=false)为什么执行了?能够详细说明一下吗?

首先说明:if()的括号里面是boolean类型;
这个不是要求直接填写boolean类型的变量,而是括号里面代码运行结果返回的一个boolean类型值,
不妨说你系额一个函数:
  1. boolean foo(){
  2. return false;
  3. }
复制代码

那么,if(foo()) 就等价于if(false);
作者: 董志立    时间: 2015-3-15 20:36
Shey 发表于 2015-3-15 20:34
首先说明:if()的括号里面是boolean类型;
这个不是要求直接填写boolean类型的变量,而是括号里面代码 ...

哦哦,谢谢谢谢!!
作者: 董志立    时间: 2015-3-15 20:38
179407246 发表于 2015-3-15 20:33
这个题的答案是B吧

恩恩,结果就是b
作者: z1342802487    时间: 2015-3-15 20:52
本帖最后由 z1342802487 于 2015-3-16 08:02 编辑

=的作用是把“ =”右边的值赋给“=”左边,属于算术运算。
  1. boolean b = true;
  2. if(b=false)  //将布尔变量b赋值为false,相当于if(false)
  3.         System.out.println("a");
  4. else if(b)//上面b已经被赋值为false故这里还是false
  5.         System.out.println("b");
  6. else if(!b)//b为false非b自然是true
  7.         System.out.println("c");
  8. else
  9.         System.out.println("d");
复制代码


==是关系运算符,对于基本数据类型,测试运算数的值是否相等,这里就不多说了。但是对于引用或数组,测试是否引用相同的对象或数组,不是测试两个不同对象或数组的内容是否相同。此运算符不用于测试字符串是否相等。


作者: 董志立    时间: 2015-3-15 21:10
z1342802487 发表于 2015-3-15 20:52
=的作用是把“ =”右边的值赋给“=”左边,属于算术运算。

==是关系运算符,对于基本数据类型,测试运 ...

哦哦,谢谢!!
作者: mark.tian    时间: 2015-3-15 21:38
楼上的大神都解释清楚了,受教了。。。
作者: 李伟松    时间: 2015-3-15 22:10
if(f=false)其中的=号是在给
作者: 李伟松    时间: 2015-3-15 22:13
if(f=false)其中的=号是在给赋值,所以false,所以就执行else if(b),也是false,接着就执行else if(!b),为true所以就是c
作者: 董志立    时间: 2015-3-16 09:35
李伟松 发表于 2015-3-15 22:13
if(f=false)其中的=号是在给赋值,所以false,所以就执行else if(b),也是false,接着就执行else if(!b) ...

恩恩,谢谢!!
作者: 董志立    时间: 2015-3-16 09:36
z1342802487 发表于 2015-3-15 20:52
=的作用是把“ =”右边的值赋给“=”左边,属于算术运算。

==是关系运算符,对于基本数据类型,测试运 ...

恩恩,谢谢了!!




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