关于Boolean类型的值再赋值一个true或者false.

一段code:

boolean m = false;

if(m = false){

        System.out.println("false");

}else{

        System.out.println("true");

}

编译结果为true。


编译前思考:第一句:把Boolean类型变量m赋值为false;  OK.没问题。

2:一个if语句:但if表达式中是再次对m变量进行赋值。而不是一个表达式。就想:那么这个if表达式的结果边是false了。输出结果应该是false.

    然结果确是true。

根据结果反推if表达式中对m变量的赋值。可以看出。其实。他应该是对m变量和false进行了比较。两边都是false.那么结果为true。从而与编译结果相对应。

那么,此处if表达式的中的单=便有了歧义。

接下来,看下对.class文件反编译的结果。

import java.io.PrintStream;
class Demo1
{
  public static void main(String[] paramArrayOfString)
  {
    int i = 0;
    if ((i = 0) != 0)
      System.out.println("false");
    else
      System.out.println("true");
  }
}

首先:可以得出Boolean类型在实际编译过程中都是转化为int类型进行底层运算的。



  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值