Java中的“switch”语句是不是仅适用于整数? [复制]
Posted
技术标签:
【中文标题】Java中的“switch”语句是不是仅适用于整数? [复制]【英文标题】:Does the "switch" statement in Java only work with integers? [duplicate]Java中的“switch”语句是否仅适用于整数? [复制] 【发布时间】:2011-07-09 02:13:50 【问题描述】:可能重复:Switch Statement With Strings in Java?
Java 中的“switch”语句是否只适用于整数?
我不能写这样的东西吗?
开关(字符串) 案例“你好”:...
谢谢
【问题讨论】:
直到 Java 7 才看到:blogs.sun.com/darcy/entry/project_coin_developer_preview 这里:cr.openjdk.java.net/~darcy/ProjectCoin/… 可以看出每个人都非常喜欢 Java 7 :) 我会用大写字母说。为什么这个问题已经结束了?另一个问题是在 2008 提出的,而我们现在是在 2011。这就像计算机时代的 50 年,Java 经历了一些重大的不确定性。 【参考方案1】:switch 语句不能用于字符串。在错误列表下......
“不要屏住呼吸”
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=1223179
虽然在查看了另一个答案中发布的即将发布的文档之后,我想这个功能在 JDK7 中可用。
【讨论】:
【参考方案2】:此答案仅适用于 Java 6 或更早版本!在 Java 7 中添加了打开字符串
14.11 The switch Statement
表达式的类型必须是 char、byte、short、int、Character、Byte、Short、Integer 或枚举类型(第 8.9 节),否则会发生编译时错误。
通常,当您需要打开一个字符串值时,您通常可以通过使用 char(因为字符串永远只有一个字符长)或枚举来解决这个限制。在您的情况下,枚举看起来更有可能。
【讨论】:
switch 确实适用于 Java SE 7 中的字符串 @Samit G 如果你问我这不是一个好主意,但它仍然只是 Java SE 7。【参考方案3】:Java 的教程说它适用于原始类型(byte、short、char、int)以及字符串。见http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
【讨论】:
本文档适用于 JDK7 这将作为 Java 7 中的一个新特性引入。本教程带有警告,它正在更新,可能不再反映 Java 6 特性。在 Java 6 中,switch 语句中的 String 尚不可用。我以为它也被取消了 7,但显然不是这样。高兴!【参考方案4】:是的。直到 java 6,不是字符串。 很难,您可以使用 ENUMS 解决方法,例如:
public enum Day
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
switch (day)
case MONDAY: System.out.println("Mondays are bad.");
break;
case FRIDAY: System.out.println("Fridays are better.");
break;
case SATURDAY:
case SUNDAY: System.out.println("Weekends are best.");
break;
default: System.out.println("Midweek days are so-so.");
break;
对我们人类来说更容易阅读,对吧?
来源是http://download.oracle.com/javase/tutorial/java/javaOO/enum.html
【讨论】:
【参考方案5】:在 java 7 中,您可以将 switch 与字符串一起使用。看here
【讨论】:
【参考方案6】:实际上,根据 Java SE 7 中的 Oracle,您可以在 switch 语句中使用字符串
http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
public class StringSwitchDemo
public static int getMonthNumber(String month)
int monthNumber = 0;
if (month == null) return monthNumber;
switch (month.toLowerCase())
case "january": monthNumber = 1; break;
case "february": monthNumber = 2; break;
case "march": monthNumber = 3; break;
case "april": monthNumber = 4; break;
case "may": monthNumber = 5; break;
case "june": monthNumber = 6; break;
case "july": monthNumber = 7; break;
case "august": monthNumber = 8; break;
case "september": monthNumber = 9; break;
case "october": monthNumber = 10; break;
case "november": monthNumber = 11; break;
case "december": monthNumber = 12; break;
default: monthNumber = 0; break;
return monthNumber;
public static void main(String[] args)
String month = "August";
int returnedMonthNumber =
StringSwitchDemo.getMonthNumber(month);
if (returnedMonthNumber == 0)
System.out.println("Invalid month");
else
System.out.println(returnedMonthNumber);
【讨论】:
以上是关于Java中的“switch”语句是不是仅适用于整数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在java中的switch语句中使用整数变量[duplicate]