【发布时间】:2014-03-29 21:32:47
【问题描述】:
请原谅我的无知。我无法理解以下看似相似的代码行之间的区别。
final int num1 = 1;-
final int num2;num2 = 2;
是什么让 num2 不符合 switch case 常量的条件?
switch (expression) {
case num1:
System.out.println("Case A");
case num2:
System.out.println("Case B");
}
【问题讨论】:
-
你能告诉我们你是如何使用它的吗?只要在开启之前声明并初始化 num2 应该没有问题。
-
这里的答案和 cmets 中的讨论可能会有所帮助:stackoverflow.com/questions/16255270/… 也将其标记为重复。
-
是的,this 就是答案。 num1 是编译时常量,而 num2 不是。
-
@NicolásCarlo 是不是说num2在编译时没有赋值?
-
@Phoenix 是的,num2 未在编译时分配。它是在运行时完成的。你现在清楚了吗?
标签: java switch-statement