【问题标题】:type-cast rule in javajava中的类型转换规则
【发布时间】:2015-09-29 07:42:20
【问题描述】:

众所周知的事实:(byte)1 ^ (byte)1 导致int(根据规范)。

有人可以向我解释为什么没有显式转换(从intbyte)可以实现以下操作吗? byte myByte = (byte)1 ^ (byte)1

另一方面,以下是不允许的:

int i = 0; byte b = i;

【问题讨论】:

    标签: java type-conversion


    【解决方案1】:

    这个:

    (byte)1 ^ (byte)1
    

    是一个常量表达式(JLS 15.28),已知它在byte 的范围内。因此,您可以在赋值上下文 (JLS 5.2) 中将其隐式转换为 byte

    此外,如果表达式是 byteshortcharint 类型的常量表达式 (§15.28):

    • 如果变量的类型是byteshortchar,并且常量表达式的值可以用变量的类型表示,则可以使用缩小原语转换。

    如果它不是常量表达式(例如,如果其中一个值是变量),那么赋值将失败。

    【讨论】:

    • 我明白了。明白了。谢谢
    猜你喜欢
    • 2018-10-05
    • 2012-02-14
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2020-12-19
    相关资源
    最近更新 更多