[英]What type of error occurs when using an uninitialized variable?
我認為以下Java代碼會引起RuntimeError(從技術上來說),因為它引用的內容不存在(就像訪問大小為5的數組中的第8個元素一樣)。
int i;
System.out.println(i);
但是,IDE會捕獲它,並在紅色下划線。 這會使它成為語法/編譯器錯誤嗎? 還是IDE足夠聰明可以捕獲的運行時錯誤?
實際上,這是編譯器錯誤,但從技術上來講不是語法錯誤嗎? 我一直認為它們是同義詞,但是語法錯誤可能只是一種編譯器錯誤...
我知道這只是語義,但是我正在教一門課,但很愚蠢,不知道它在技術上是什么類型的錯誤。
如果int i;
正在聲明局部變量,在將其分配給它之前使用它是編譯錯誤; 有關JLS的相關部分,請參見@Eran的答案。
編譯錯誤和編譯時錯誤是同義詞。 (編譯器錯誤是另一個同義詞,盡管有時人們會用它來指代編譯器中的錯誤。)
這會使它成為語法/編譯器錯誤嗎?
這是一個編譯錯誤。 但這不是語法錯誤。
這種類型的編譯錯誤通常稱為語義錯誤 。
語法錯誤表示代碼不符合該語言的指定語法(由語法定義)。 換句話說,解析器無法解析它。
語義錯誤是任何不是語法錯誤的編譯錯誤。 取決於編程語言,語義錯誤可能包括以下內容:
還是IDE足夠聰明可以捕獲的運行時錯誤?
這不是運行時錯誤。
實際上,這是編譯器錯誤,但從技術上來講不是語法錯誤嗎?
正確。
我一直認為它們是同義詞,但是語法錯誤可能只是一種編譯器錯誤...
它們不是同義詞。 語法錯誤只是一種編譯錯誤。
(不幸的是,某些Javascript實現將所有編譯錯誤都稱為“語法錯誤”。但是,如果您在教Java,則無關緊要。Java不是Javascript。)
您是否嘗試過在沒有IDE的情況下進行編譯?
在Java中,它被檢測為編譯時錯誤,提示: 錯誤:變量i可能尚未初始化
這是簡單的運行時錯誤。 IDE會指出這一點,但是如果您運行它,將會收到一些錯誤,例如我需要初始化
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.