Switch语句在字节码中的表示和效率?

jbr*_*aud 3 java performance bytecode representation switch-statement

虽然 switch 语句可以表示为一系列 if 语句,但似乎在将 Java switch 语句编译成字节码时,使用了不同的方法。

  • 字节码使用的表示是什么?
  • 我认为这种替代表示是出于效率原因,那么效率与 if 语句表示相比如何?
  • 是否有任何其他考虑导致使用这种表示?

Ami*_*ani 5

阅读规范。在 Java 中,如果您编写 switch 语句,则根据各种情况,switch 将转换为字节码中的 tableswitch 指令。本质上是一个跳转表。但是,如果 JIT 可以将字节码优化为更有效的内容,则字节码的外观可能无关紧要。这当然取决于平台。