How does Java#39;s switch work under the hood?(Java 的 switch 在底层是如何工作的?)
问题描述
Java 的 switch 语句在底层是如何工作的?它如何将正在使用的变量的值与案例部分中给出的值进行比较?它是使用 ==
还是 .equals()
,还是完全是别的东西?
How does Java's switch statement work under the hood? How does it compare the value of the variable being used, to those given in the case parts? Does it use ==
or .equals()
, or is it something else entirely?
我主要对 1.7 之前的版本感兴趣.
I'm mainly interested in the pre 1.7 versions.
推荐答案
两者都没有. 它使用 lookupswitch
JVM指令,本质上是查表.看一下下面例子的字节码:
Neither. it uses the lookupswitch
JVM instruction, which is essentially a table lookup. Take a look at the bytecode of the following example:
public static void main(String... args) {
switch (1) {
case 1:
break;
case 2:
break;
}
}
public static void main(java.lang.String[]);
Code:
Stack=1, Locals=1, Args_size=1
0: iconst_1
1: lookupswitch{ //2
1: 28;
2: 31;
default: 31 }
28: goto 31
31: return
这篇关于Java 的 switch 在底层是如何工作的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Java 的 switch 在底层是如何工作的?


- Java包名称中单词分隔符的约定是什么? 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01