Java左移位运算符

Java左移位运算符,java,bit-manipulation,bit-shift,Java,Bit Manipulation,Bit Shift,在java中,char a=5并使用leftshift运算符作为println(左移位被应用于int或long操作数。当您将其应用于char和int时,char被提升为int,结果是int。因此262144是有效的结果 : 移位运算符在语法上是左关联的(它们从左向右分组) 对每个操作数分别执行一元数字提升(§5.6.1)(不对操作数执行二进制数字提升(§5.6.2)) 如果移位运算符的每个操作数的类型在一元数字提升后不是基元整数类型,则为编译时错误 移位表达式的类型是左手操作数的提升类型 …我真

在java中,char a=5并使用leftshift运算符作为println(左移位被应用于
int
long
操作数。当您将其应用于
char
int
时,
char
被提升为
int
,结果是
int
。因此262144是有效的结果

:

移位运算符在语法上是左关联的(它们从左向右分组)

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

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

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


…我真的不明白你说的话。有什么问题吗?你的问题是什么?
我得到了
1310720
。而从
aMaybe-change-promoted到widedeed?@Lino JLS说
一元数字推广(§5.6.1)在每个操作数上分别执行。
没错,在转换为int的过程中,由于所有其他类型都被加宽,您被与Char混淆了。可以说int是Java universe的中心。@MS90-这不太正确。类型被提升为最接近的大类型。Char被加宽为int并不是因为int是Java universe的中心e、 但是因为它是可以处理字符的最接近的类型(当然long也可以,但是它太大了,没有必要)。