[英]Obscure conditional Java Syntax
我們剛剛找到了一位同事和我,使用If條件語法編寫了一個奇怪的編譯語法:
if (true); {
foo();
}
這里有人向我們解釋這種奇怪的語法嗎? 謝謝。
對我來說,它看起來像一個帶有空體的if語句,后跟一個始終執行的代碼塊(與if語句無關)。 例如,foo也在這里執行:
if (false); {
foo();
}
第一部分, if (true);
只是一個無條件的條件,結束於;
。 剩下的就是調用新范圍塊中的foo()
。 你應該發現總是調用foo()
。
這沒有任何意義,但在語法上是正確的。 它也可以寫成
if (true)
{
// do nothing
}
{
foo();
}
圍繞foo()的{}; 在這種情況下沒有任何意義 如果定義了變量,它將限制{}內定義的變量的范圍。
{
int i=0;
System.out.println(i);
}
{
String i="hello";
System.out.println(i);
}
工作得很好。
我認為這是等價的
if (true) {};
foo();
因為if statemnt在分號后結束,而foo語句只是放在一個塊({})中......
如果或者有人計划稍后寫一個條件但是從來沒有這樣做過
我認為你可以安全地刪除這個if語句,這樣做絕對沒有意義。
正如其他人所指出的那樣,語法上它是一個帶有空執行語句的條件(即什么都不做),然后調用包含在范圍括號內的foo()。 foo()總是被執行。 實際上,如果你在一個真實案例而不是編程測試中發現這一點,我懷疑其中一個:
那是死代碼。 if塊無用。
相當於
if(doesn't matter whats here) {}
foo();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.