存储在变量与多种不同方法中

Twi*_*one 4 java variables bytecode switch-statement

使用它的优点和缺点是什么:

String a = new String();
switch (i) {
case 1: a = "Cueck"; break;
case 2: a = "Blub"; break;
case 3: a = "Writing cases is BORING!"; break;
}
System.out.println(a);
Run Code Online (Sandbox Code Playgroud)

与:

switch (i) {
case 1: System.out.println("Cueck"); break;
case 2: System.out.println("Blub"); break;
case 3: System.out.println("Writing cases is BORING!"); break;
}
Run Code Online (Sandbox Code Playgroud)

哪个生成更好的字节码?哪个生成更多字节码?

Dun*_*nes 5

您的第一个选项是整洁,并且冗余代码更少.一个建议的变化:

String a;

switch (i) {
  case 1: a = "Cueck"; break;
  case 2: a = "Blub"; break;
  case 3: a = "Writing cases is BORING!"; break;
  default: throw new IllegalStateException("Unknown option!");
}

System.out.println(a);
Run Code Online (Sandbox Code Playgroud)

不要不必要地创建String - a应该在需要时进行instatiated.默认情况下应抛出异常或设置a为默认值.

哪个生成更好的字节码?哪个生成更多字节码?

我不担心.这并没有把我视为任何现实应用程序中的一个可能的瓶颈.此外,您无法确定在应用程序运行后JVM将如何优化字节代码.

  • 也永远不要调用`new String()`,因为这与[String interning](http://en.wikipedia.org/wiki/String_interning)混淆. (3认同)