我對Java編程還很陌生,所以我有一個問題。 我可以在if-else語句內聲明一個變量,就像for循環一樣嗎?在if語句中聲明一個變量?
for (int i=0; i<10; i++)
int test;
if (test=6;test ==9;) {
System.out.println("Yes");
}
else {
System.out.println("No");
}
我對Java編程還很陌生,所以我有一個問題。 我可以在if-else語句內聲明一個變量,就像for循環一樣嗎?在if語句中聲明一個變量?
for (int i=0; i<10; i++)
int test;
if (test=6;test ==9;) {
System.out.println("Yes");
}
else {
System.out.println("No");
}
不,你不能這樣做。 if
語句中的圓括號內的內容必須是一個表達式,其值爲boolean
。變量聲明永遠不是Java中的表達式。
假設你正試圖宣稱test
以便其範圍僅限於if/else語句,那麼這是如何做到這一點:
public void someMethod() {
....
{ // nested block to limit the scope of 'test'
int test = 6;
if (test == 9) {
System.out.println("Yes");
}
else {
System.out.println("No");
}
}
}
(這個例子沒有多大意義,但我認爲這不是意味着)。
哇,不知道你可以在一個方法內嵌套塊。是否有任何缺點對他們來說,還是他們只是一個沒有任何其他影響的範圍限制機制? – awksp
真的很感謝你的最好和最清晰的答案! – user3744056
沒有性能劣勢。我猜他們可以減少可讀性。 –
這是錯誤的
if (test=6;test ==9;) {
System.out.println("Yes");
}
else {
System.out.println("No");
}
你不能有內if()
你正在做的是叫做初始化方式分號(test=6;
),這是不是allowed.You可以只比較2個變量裏面如果像if(test==6)
記住,java
If
接受o nly boolean
即true
或false
(不像在javascript中接受大於1的任何東西)
所以這意味着我不能在if-else語句中聲明變量? – user3744056
@ user3744056你正在做的方式被稱爲初始化'test = 6'你不能在裏面初始化如果 – SpringLearner
等一下,在if語句裏肯定允許初始化。見[這裏](http://ideone.com/jqLnFP)。它實際上是錯誤的來源,因爲程序員意外地分配而不是比較。 – awksp
java中條件語句或決策聲明中的表達式必須計算爲布爾值(true/false)。即使下列情況也不會編譯:
if(null){}
if(0){}
等等。
那麼,你爲什麼不試試看?如果編譯器抱怨,那麼你在做什麼是不對的。 – awksp
當然你可以 – user2277872
if語句的代碼是否正確? 「test == 9」;或者它應該只是「測試== 9」? – user3744056