黑马程序员技术交流社区

标题: 这种情况下"="和"=="有什么区别 [打印本页]

作者: 荔荔舟    时间: 2016-10-9 13:16
标题: 这种情况下"="和"=="有什么区别
E:\1.jpg
E:\2.jpg
作者: 荔荔舟    时间: 2016-10-9 13:18
图片没传好。。

1.PNG (19.54 KB, 下载次数: 22)

1.PNG

2.PNG (18.12 KB, 下载次数: 19)

2.PNG

作者: 荔荔舟    时间: 2016-10-9 13:20
为什么两种情况运行结果都是false。"="情况下会有黄色警告提示m没有被使用,而"=="情况下没有这种情况
作者: 渔夫的星辰    时间: 2016-10-9 13:35
=是赋值, ==是判断是否相等. 黄线是因为你将true赋值给m,但是在if语句中又重新给它赋值的原因
作者: 扬帆起航fonnson    时间: 2016-10-9 13:39
=会先赋值后判断,等等于你懂啦

作者: langyabang1110    时间: 2016-10-9 14:19
第一个 是 false值赋给m if(false)  输出false
第二个 是 m值为true 和false== 后判定为false if(false) 输出false
作者: 荔荔舟    时间: 2016-10-9 14:54
langyabang1110 发表于 2016-10-9 14:19
第一个 是 false值赋给m if(false)  输出false
第二个 是 m值为true 和false== 后判定为false if(false) 输 ...

嗯 懂啦~~
作者: 醉醒    时间: 2016-10-9 16:59
图1 是赋值,将fals赋值给m,则if判断句中是false,而遇到false则执行else

图2 是判断,m在if之前赋值为true,在if语句里进行true与false的判断,结果为false,执行else语句
作者: Jarc    时间: 2016-10-9 20:16
=是赋值,你赋值false,那你它就是假,true就是真。==是判断,条件成立为真,否则为假
作者: skyleon    时间: 2016-10-9 20:53
本帖最后由 skyleon 于 2016-10-9 20:55 编辑

这两个运算符本来就有区别啊,难道还分场合的有区别?
首先,"="是赋值运算符,它的作用就是将"="右边的值赋给左边. 它扩展的赋值运算符:+=, -=, *=, /=, %= ,拿+=来说,就是把左边和右边做加法,然后赋值给左边,其余扩展赋值运算符效果以此类推.

其次,"=="是关系(条件或者比较)运算符,这个运算符的作用是判断"=="左右两边的值是否相等,运算结果是布尔(boolean)类型,相等就为true不相等为false.

第一种情况:
if(m = false )在括号内将false赋给布尔类型的变量m,由于if后括号内是false,所以执行else语句,输出false.
第二种情况:
if(m == false )括号内是一个比较表达式,其作用就是比较布尔类型变量m的值和false是否相等,由前面知道m的值为true,显然不相等,比较表达式的结果为false.if后括号内是false,执行else语句,输出false.

虽然两种情况都是由于if(false)执行else语句,输出false,但是if后面的false的来源不同,第一中情况是执行赋值语句直接得到的,第二种情况是执行比较运算后得到的.


作者: 小明教授    时间: 2016-10-9 21:00
两个不一样的东西,你居然不知道
作者: 飞舞的指尖    时间: 2016-10-9 22:38
第一张图片是将false赋值给m;   =  赋值
第二章图片是将m代表的(true)与 false比较 ;  == 比较运算符




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