簡體   English   中英

為什么一個簡單的布爾值的 if/else if/else 沒有給出“無法訪問的代碼”錯誤

[英]Why is an if/else if/else for a simple boolean not giving an “unreachable code” error

為什么這段代碼沒有給出“無法訪問的代碼”錯誤? 因為布爾值只能是真或假。

public static void main(String args[]) {
    boolean a = false;
    if (a == true) {

    } else if (a == false) {

    } else {
        int c = 0;
        c = c + 1;
    }
}

JLS 14.21。 無法訪問的語句

如果由於無法訪問語句而無法執行語句,則會出現編譯時錯誤。

當 if-then-else 語句可達時,else 語句可達。

您的 if-then-else 語句是可訪問的。 因此,根據定義,編譯器認為 else 語句是可達的。

注意:有趣的是,下面的代碼也可以編譯

// This is ok
if (false) { /* do something */ }

這不是真正的while

// This will not compile
while (false) { /* do something */ }

因為while的可達性定義是不同的(強調我的):

包含的語句是可到達的,當條件是while 語句是可到達的,並且條件表達式不是值為 false 的常量表達式

暫無
暫無

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

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