黑马程序员技术交流社区

标题: if (m = false) ,if(表达式),但是m=false是赋值表达式,为什么程序还可以运行; [打印本页]

作者: 泪雨星空    时间: 2016-4-14 19:38
标题: if (m = false) ,if(表达式),但是m=false是赋值表达式,为什么程序还可以运行;
if (表达式)
{
语句;
}
其中表达式是用布尔类型表示,表达式为true,表达式满足时,执行语句,但是下面这条语句可以运行之后的结果是false,为什么程序编译和运行的时候都没有问题;
public class Test {
        public static void main(String[] args) {
                boolean m = true;
                if (m = false) {
                        System.out.println("true");
                } else {
                        System.out.println("false");
                }
        }
}
作者: west2179    时间: 2016-4-14 19:40
因为m = false
当做false在使用
作者: zw2008    时间: 2016-4-14 19:47
if (m = false) 这句话执行后,m的值变为false;所以执行
else {
            System.out.println("false");
       }
这个语句
作者: 董改名    时间: 2016-4-14 20:57
m = false;是赋值语句,不是判断语句
作者: hm837694030    时间: 2016-4-14 21:46
本帖最后由 hm837694030 于 2016-4-14 21:49 编辑

if (m = false) 这句有问题,if(关系表达式),“m=false”是赋值语句,即执行else语句。
正确格式为:if (m  == false) “=”是赋值运算符
“==”是关系运算符




作者: Yoyoqiu    时间: 2016-4-14 21:58
用 m == false  才会判断true还是false




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