在Java中,对switch语句中的块的访问是直接的吗?

在Java中,对switch语句中的块的访问是直接的吗?,java,algorithm,switch-statement,Java,Algorithm,Switch Statement,我在想, 在Java中,在switch语句中,到达由输入switch值标识的代码块所需的访问时间是多少 这是一个完整的顺序搜索 是直达吗?如果是,它是如何实施的 “决定是使用if-then-else语句还是switch语句取决于可读性和语句测试的表达式。if-then-else语句可以基于值或条件的范围测试表达式,而switch语句只基于单个整数、枚举值或字符串对象测试表达式。“-JavaDocs “它使用lookupswitchJVM指令,它本质上是一种表查找”—— 担心“访问时间是微观优化

我在想, 在Java中,在
switch
语句中,到达由输入
switch
值标识的代码块所需的访问时间是多少

  • 这是一个完整的顺序搜索

  • 是直达吗?如果是,它是如何实施的

“决定是使用if-then-else语句还是switch语句取决于可读性和语句测试的表达式。if-then-else语句可以基于值或条件的范围测试表达式,而switch语句只基于单个整数、枚举值或字符串对象测试表达式。“-JavaDocs

“它使用lookupswitchJVM指令,它本质上是一种表查找”——


担心“访问时间是微观优化和过早优化,这是有害的。相反,担心所讨论代码的可读性和可维护性。”——

这取决于编译器+JVM。这有什么关系?即使switch case不使用查找表,并且在大多数情况下都会运行顺序搜索e相当小的一组案例。顺便说一句,测试真的很容易,你测试过吗?在@MenoHochschild上也可以找到很多材料和答案。你的发现对这个问题来说是重复的。它解释了OP在这里提出的所有问题,还有一些问题。有人告诉我,如果你有像1、2、3、500000000(4个键)这样的键您可能会遇到性能问题,因为某些编译器会创建一个巨大的直接访问表。这听起来很奇怪。