今天在做题的时候碰到了一个比较简单地问题,但我却犯了个低级错误,唉,什么时候才能改掉自己粗心大意的习惯啊(改是不可能改的,这辈子都不可能改的,手动狗头保命!)。
public void contextLoads() {
Boolean flag = false;
if (flag = true){
System .out.println("true");
}
else{
System.out.println("false");
}
}
代码就是这样,很简单对吧。问的是输出的是什么?有的人可能就要说了,这还不简单,我一看就知道代码的第三行写的有问题。肯定是编译报错嘛,我还以为有多难呢,就这啊?我还没开始认真呢就已经结束啦,真的是,一点挑战都没有(好吧,我承认这是我当时做题时内心的真实写照,毕竟我一看到 if 判断里面用的是 “=” ,而不是 “==” 的时候我就没细看了,直接就做了判断)
其实这题的考点就在这个 “=” 符号,也没什么难的,仔细分析一下就明白了,我们都知道 “=” 表示赋值,因此这个 if 判断里面的意思就是将 true 赋值给flag,然后就变成了 “if(true)” ,所以最后输出是:true
我们都知道 “==” 对于基本数据类型来说是比较等式两边的大小,而对于引用数据类型来说是比较等式两边的内存地址是否相等,所以当我们把第三行代码中的 “=” 换成 “==”,你觉得最后的结果会是什么样的呢?
怎么样,最后的答案是不是你想的一模一样。