Java有类似于分支或跳转表的东西吗?
根据维基百科,分支或跳转表是
用于描述使用分支指令表将程序控制(分支)转移到程序的另一部分(或可能已动态加载的不同程序)的有效方法的术语.
Java是否有这样的东西,或者我只需要使用if/else if/else或case语句?
Java有一个switch语句,但它是否编译为字节码中的跳转表是依赖于实现的.通常,如果编译器在switch语句中为每个case找到了很好的常量,那么编译器会为你构建一个跳转表.不过,我不确定你应该真正关心它是如何实现的.如果您首先使用Java进行编码,那么您可能很乐意让编译器和JIT为您处理这些事情.
请注意,switch仅适用于整数基元类型和枚举,因此如果您正在使用其他对象类型,则需要使用if/else语句(并且您可能不应该比较双精度或浮点数以确保相等).
最后,即使枚举引用在技术上是"常量",如果你的switch语句在定义枚举的同一个编译单元中,一些编译器只会在你打开枚举时生成一个跳转表.否则,它将生成一个if/else链(就像你必须为常规对象做的那样).有关细节的详细信息,请参阅有关扩展对象的交换机用法的java.net论坛.