Asm api版本定义中的按位OR运算符

时间:2016-03-08 13:06:37

标签: java java-bytecode-asm

我正在浏览asm的源代码,并找到了以下定义

http://grepcode.com/file/repo1.maven.org/maven2/org.jodd/jodd-proxetta/3.5.2/jodd/asm5/Opcodes.java

int ASM4 = 4 << 16 | 0 << 8 | 0;

有人可以解释为什么需要按位OR吗? 为什么只是int ASM4 = 4

1 个答案:

答案 0 :(得分:4)

值不是4;据推测,他们是这样编写的,因为他们认为它是一个由三部分组成的数字4.0.0,每个部分占用一个字节。如果他们写了int ASM4 = 262144;,那读者就不清楚了。表达式在编译时进行评估,因此没有运行时成本。