标签: java type-conversion
众所周知的事实:(byte)1 ^ (byte)1会产生int(根据规范)。
(byte)1 ^ (byte)1
int
有人可以向我解释为什么没有明确的演员(从int到byte)可能会有以下情况? byte myByte = (byte)1 ^ (byte)1
byte
byte myByte = (byte)1 ^ (byte)1
另一方面,不允许以下内容:
int i = 0; byte b = i;
答案 0 :(得分:8)
此:
是一个常量表达式(JLS 15.28),已知它在byte范围内。因此,您可以在分配上下文(JLS 5.2)中隐式将其转换为byte:
此外,如果表达式是类型为byte,short,char或int的常量表达式(第15.28节): 如果变量的类型是byte,short或char,则可以使用缩小的基元转换,并且常量表达式的值可以在类型中表示。变量
此外,如果表达式是类型为byte,short,char或int的常量表达式(第15.28节):
short
char
如果不是常量表达式(例如,如果其中一个值是变量),则赋值将失败。