flag = true和flag == true

        今天在做题的时候碰到了一个比较简单地问题,但我却犯了个低级错误,唉,什么时候才能改掉自己粗心大意的习惯啊(改是不可能改的,这辈子都不可能改的,手动狗头保命!)。

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

                                                         

        我们都知道 “==” 对于基本数据类型来说是比较等式两边的大小,而对于引用数据类型来说是比较等式两边的内存地址是否相等,所以当我们把第三行代码中的 “=” 换成 “==”,你觉得最后的结果会是什么样的呢?

                                        

        怎么样,最后的答案是不是你想的一模一样。

        

               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值