最终变量和编译时间常数之间有什么区别?
考虑以下代码
final int a = 5; final int b; b=6; int x=0; switch(x) { case a: //no error case b: //compiler error }
这是什么意思?何时以及如何为最终变量分配值?在运行时会发生什么,在编译时会发生什么?为什么要给switch一个编译时间常数?Java还有哪些其他结构需要编译时间常数?
问题在于, 所有case:语句在编译时 都 必须是最终的 。您的第一个陈述 是最终决定 。a对于100%,除以外没有其他值5。
case:
a
5
final int a = 5;
然而,这 不能保证 对b。如果周围有一个if语句b怎么办?
b
final int b; if(something()) b=6; else b=5;