簡體   English   中英

java.lang.Error:未解決的編譯錯誤:循環無法訪問的代碼

[英]java.lang.Error: Unresolved compilation error: Unreachable code for loop

我有以下幾行代碼

boolean b = false;
for (int i = 0; b; i++) {}

它執行得很好

現在,如果我將上面的代碼替換為

for (int i = 0; false; i++) {}

它給出-> java.lang.Error:未解決的編譯問題:無法訪問的代碼

為什么? 請幫忙。

基本上,第一個代碼中的b不是編譯時常量表達式 ,而false是。 如果將第一個代碼中的布爾變量更改為:

final boolean b = false;

它也將無法編譯,因為現在它是一個常數表達式,因為b值以后無法更改。

foreach循環的第二個參數是條件。 當此條件為true ,循環將執行。 如果將false作為參數,它將永遠不會執行,因此無法訪問其中的代碼。

究其原因,第一個作品和二不就是因為編譯器沒有檢查值(或不能充分得到它)的b ,但是當你明明白白使用false的條件一點也不含糊。

如果您使用變量作為條件,則編譯器不會抱怨,因為它不檢查執行到達循環時將具有哪個值(這是運行時的工作),與硬編碼false值相反。

當然! 由於錯誤條件,循環體將永遠不會執行。 結果,循環和i ++的主體確實無法訪問。 這樣做到底有什么意義?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM