黑马程序员技术交流社区

标题: 求解IF语句中使用赋值运算符(=)和关系运算符(==)的区别 [打印本页]

作者: 种一棵树    时间: 2014-3-30 14:16
标题: 求解IF语句中使用赋值运算符(=)和关系运算符(==)的区别
  1. class Test0
  2. {

  3.         public static void main(String[] args)
  4.         {
  5.                 boolean m = true;    //初始化m
  6.                 if (m = false)
  7.                         {
  8.                         System.out.println("true");
  9.                         }
  10.                 else
  11.                         {
  12.                         System.out.println("false");
  13.                         }
  14.         }
  15. }
复制代码
if(m = false)语句中使用赋值运算(=),编译得到结果false。
使用关系运算符 if(m == false),也得到同样的结果false。
这两者之间有什么区别?




作者: xietansheng    时间: 2014-3-30 14:19
(m = false): 表示将false赋值给m,然后整个括号的结果值以m的值表示,即false
(m == false):  表示判断m与false是否相等,如果相等的整个括号的结果值为true,不相等整个括号的结果值为false
作者: 种一棵树    时间: 2014-3-30 14:29
xietansheng 发表于 2014-3-30 14:19
(m = false): 表示将false赋值给m,然后整个括号的结果值以m的值表示,即false
(m == false):  表示判断m与 ...

谢谢!
觉得使用==比较直观容易理解
作者: xietansheng    时间: 2014-3-30 14:39
种一棵树 发表于 2014-3-30 14:29
谢谢!
觉得使用==比较直观容易理解

if (m = false); 使用这个毫无意义,因为结果已经是确定的,就相当于if (false);
一般情况下,
如果需要 if (m == false), 则使用 if ( ! m );
如果需要 if (m == true), 则使用 if ( m );

作者: 一诺千金    时间: 2014-3-30 21:30
if()里边不能用=,没意义了,要用==
=是赋值运算符
==关系运算符
作用不一样滴
作者: 种一棵树    时间: 2014-3-31 10:01
xietansheng 发表于 2014-3-30 14:39
if (m = false); 使用这个毫无意义,因为结果已经是确定的,就相当于if (false);
一般情况下,
如果需要  ...

嗯,因为这个m的类型是Boolean型,可以直接赋值,如果是其他类型的话,是没有什么意义的。因为在百度上查看了一下,有关的回答。想更清楚的理解这个问题。
百度知道有关问题的回答如下:
Q:  java语言 if语句中的等号一定要==这样写吗 =怎么不行?
A: ==是比较值是不是一样,=是比较变量内存是否一样,你比较两个变量的值当然要用==,字符串比较使用equals方法

原文地址如下:
http://zhidao.baidu.com/link?url=WKS5LUYoXT4nKAqL0dxpE7bduYuzPxFLVUJiwbdW83j08z5MipgKcAP4LEjKCPa2TOybTvJqEzztxxOjr4fXJK

作者: 小班。    时间: 2014-3-31 10:03
明白了就好。、、




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