为什么对字节进行算术运算会在kotlin中返回int?

时间:2018-10-17 08:42:44

标签: kotlin integer-arithmetic

考虑以下代码:

val x1: Byte = 0x00
val x2: Byte = 0x01
val x3: Byte = x1 + x2;

这会产生编译错误,因为相加2 Byte的结果是Int

要解决此问题,我需要将结果手动转换回一个字节:

val x3: Byte = (x1 + x2).toByte()

这是非常违反直觉的。为什么算术运算符会这样工作?

1 个答案:

答案 0 :(得分:4)

  

这是非常违反直觉的。为什么算术运算符会这样工作?

它也是Java语义的精确副本。 Java没有用于添加两个bytechar的字节码。尽管Kotlin可以决定更改语义并发出更复杂的字节码,但选择与Java保持一致有其优点。

一个类似的问题是“为什么short是带符号的类型?”答案也差不多。 Kotlin旨在使经验丰富的Java开发人员熟悉。