在上Definite Assignment在Java語言規範一章中,Example 16-2說爲什麼Java語言規範說表達式(n> 2)不是一個常量表達式?
Java編譯器必須產生一個編譯時錯誤代碼:
{ int k; int n = 5; if (n > 2) k = 3; System.out.println(k); /* k is not "definitely assigned" before this statement */ }
即使n的值是已知在編譯時,並且原則上 在編譯時可以知道對k的賦值總是會被執行(更適當地,被評估) 。根據本節中規定的規則,Java編譯器必須運行 。規則只識別 常量表達式;在此示例中,表達式n> 2是 不是第15.28節中定義的常量表達式。
但是,如果我們看§15.28,它說,
關係運算符<,< =,>和> =
有助於常量表達式。
表達式n > 2
是否爲常量表達式?我們如何確定這一點?
'n'是一個常量表達式嗎?不。 – Tunaki