Raghav Sood Raghav Sood - 10 months ago 52
Java Question

How does Java's switch work under the hood?

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 is it something else entirely?

I'm mainly interested in the pre 1.7 versions.


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:
  case 2:

public static void main(java.lang.String[]);
   Stack=1, Locals=1, Args_size=1
   0:   iconst_1
   1:   lookupswitch{ //2
                1: 28;
                2: 31;
                default: 31 }
   28:  goto    31
   31:  return