如何为字符串执行switch case?

我对switch-case声明有疑问。 这是我的代码:

String month = "April"; switch (month.toLowerCase()) { case "january": monthNumber = 1; break; case "february": monthNumber = 2; break; case "march": monthNumber = 3; break; case "april": monthNumber = 4; break; 

等等..

在这方面我有3个问题:

1)将月份与案例值进行比较,即案例“1月”,案例“2月”。编译器从以下内容中使用了什么? – month.equals(“case-value”)? – 月==案例值?

2)并且case-values内部转换为StringBuilder / StringStringBuffer或者只是它们仍然是String对象??

3)我如何从字节代码中知道这一点,即是否有任何可用的工具,我可以直接查看编译器生成的代码,以了解内部的行为如何?

3)我相信JDeveloper具有字节码调试器function。 如果JDeveloper不是和选项,请查看我发现的这些工具:

http://sourceforge.net/projects/jbcd/

http://andrei.gmxhome.de/bytecode/index.html

http://www.drgarbage.com/how-to-debug-bytecode-with-bytecode-visualizer.html

不确定数字3,但查看字节代码可能太低,无法轻松查看正在使用的方法。

1)使用.equals()比较字符串。

2)字符串保留为String对象

请参阅: http : //docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

1 – 将switch表达式中的String与每个case标签关联的表达式进行比较,就像使用String.equals方法一样。

2 – Normal String对象用于此switch case语句

http://blogs.oracle.com/darcy/entry/project_coin_string_switch_anatomy