如何为字符串执行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