标签: java literals
我发现常量文字是在编译时计算的,例如:int a=10+20;但是当我尝试使用int b=10/0;时,我发现它是在运行时计算的。 你能否告诉我为什么在运行时计算这个常量字面值? 谢谢。
int a=10+20;
int b=10/0;
答案 0 :(得分:3)
如果编译器可以保持与在运行时完成的语义相同的语义,则可以在编译时计算常量值。如果不是(例如,除以零的情况)则将计算推迟到运行时间。有关详细信息,请阅读JLS 15.28。