Java左移运算符

时间:2019-02-25 11:56:27

标签: java bit-manipulation bit-shift

在Java中,char a = 5并使用leftshift运算符作为println(a << 18)/ *结果:262144 * /,它在16位之后仍给出进一步的答案,但不应这样做,因为Java中的char是16位。为什么?

1 个答案:

答案 0 :(得分:2)

左移应用于intlong操作数。将其应用于charint时,char被提升为int,结果为int。因此262144是有效的结果。

JLS 15.19. Shift Operators

  

shift运算符在语法上是左联想的(它们的组从左到右)。

     

分别对每个操作数执行一元数值提升(第5.6.1节)。 (不对操作数执行二进制数字提升(第5.6.2节)。)

     

如果在一元数值提升后,移位运算符的每个操作数的类型不是原始整数类型,则是编译时错误。

     

移位表达式的类型是左操作数的提升类型