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

标签 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;

谁能解释一下为什么需要按位或? 为什么只是int ASM4 = 4

最佳答案

该值不是 4;是 262144。大概他们这样写是因为他们将其视为由三部分组成的数字 4.0.0,每一部分占用一个字节。如果他们写成int ASM4 = 262144;,读者就不清楚了。该表达式在编译时计算,因此没有运行时成本。

关于java - Asm api 版本定义中的按位 OR 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35868233/

相关文章:

java - 分层架构中的 Spring Boot Restful API 验证

java.util.NoSuchElementException错误,查找了可能的原因,仍然无法修复

java - IntelliJ IDEA 17 - ASM 字节码大纲不起作用

java - 与 Hibernate 4.3.1 兼容的 Javassist 版本是什么

java - JVM 中的 if(true)。如何生成合适的指令?

java - 从内部 jar 中的类路径加载资源

java - JPopupMenu 知道哪个 JMenuItem 被点击

java - 方法拦截器未在测试中调用

java - 确定 catch block 在哪里结束 ASM

java - 用动态生成的类替换反射调用