【问题标题】:==operator comparison of int and byte==运算符比较int和byte
【发布时间】:2020-11-10 17:56:33
【问题描述】:

//代码开始

int a=3;
byte b=3;
if(a==b)  --> returns true

//代码结束

  • 查询:

    IT 返回真,因为比较 a 和 b 中的位。 a = 00000011 b = 00000011

    这里只进行位模式比较,int 中末尾的零无关紧要。

    上面这句话表达了什么意思??

【问题讨论】:

  • It 可能会有所帮助。

标签: java compare operator-keyword


【解决方案1】:

在 java 中,自动类型转换将任何小数据类型转换为两种类型中较大的一个。所以byte bint a 比较时会转换为int b

知道double最大 数据类型,而byte最小

【讨论】:

    【解决方案2】:

    编译器不像你猜的那样只比较两个操作数的最低有效 8 位,而是在字节中添加 24 个 0 或(或 1,如果该字节为负数)以使其与 int 大小相同。这称为二进制数字提升,在 JLS 的 §5.6.2 中指定。从byteint 的转换在§5.1.2 中指定。

    【讨论】:

      猜你喜欢
      • 2012-06-06
      • 2020-01-21
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多