[英]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.