Intellij IDEA說,因爲它不是一個聲明。這是一份聲明。
當你添加大括號,你把它變成一個塊語句......這是一個聲明。
但是,這是蹭。如果這段代碼是合法的,那就沒用了。
if (a> 1)
String string = "fds";
爲什麼?因爲聲明的範圍必須在if
聲明結束時結束。你會聲明一個變量,不能使用。
這裏有幾個選擇:
1)該版本聲明的變量中,如果塊
if (a> 1) {
String string = "fds";
// you can use 'string' here
}
// ... but not here, because it is now out-of-scope.
2)該版本聲明和if語句前初始化變量並在if中爲其分配新的值:
String string = "asdf";
if (a> 1) {
string = "qwerty"; // assignment, not declaration
}
// OK to use 'string' here.
@ Maroun的回答給出了你寫的東西不是有效的Java代碼的技術原因。
1 - 其實,IntelliJ IDEA的編譯器是 「鬆散的真相」。實際上,JLS稱之爲「局部變量聲明語句」。所以它在技術上是一個「聲明」......但它是一種特殊的類型,不能用於所有可以使用普通語言的語境中。
的'{...}'周圍生成的聲明範圍內,因爲它代表'串串= 「FDS」;'沒什麼意思,作爲變量可以」不會被使用,只是一種閃爍和存在 – MadProgrammer
該代碼是否有意義?控制將永遠不會進入如果 – Rehman