[英]False boolean = True?
我在一本書中找到了這個代碼,並在Netbeans中執行了它:
boolean b = false;
if(b = true) {
System.out.println("true");
} else {
System.out.println("false");
}
我只是不明白為什么這段代碼的輸出是真的,請有人賜教,謝謝。
它缺少雙等號。 所以它正在進行賦值而不是相等比較(並且記住,賦值的返回值是新值)。 在大多數情況下,大多數類型不是布爾值的事實意味着結果不是布爾值,因此它對於if
語句變得非法,從而導致編譯器錯誤。 但是,由於此處的類型已經是布爾值,因此賦值會產生布爾值,因此安全檢查失敗。 因此, b = true
表示為b
賦值true
,這是由if
語句返回和檢查的值。
這是因為if語句條件不是比較。 這是一項任務:
if(b = true)
哪個永遠都會回歸真實。 因此,它總是會打印true
。
如果您想進行比較,則需要使用==
。
在“if”語句中,您將值“true”賦給b。 您應該使用比較運算符“==”檢查該值。
boolean b = false;
if(b == true)
{
System.out.println("true");
}
else
{
System.out.println("false");
}
if(b = true)
這是真的,因為=是賦值運算符而不是相等運算符==
if (b = true)
將值true
賦給b
,然后對該true值進行操作。 這就是類C語言的危險,如果你遺漏了第二個=
當你想要進行比較時,你會得到一個分配,而不是意想不到的結果。
這是因為它是一項任務。 你沒有檢查b,你只需要指定它。
可以認為int x有兩個可能的值,1或0.如果x = 1,則執行此操作。 否則,(x = 0)然后做其他事情。 布爾只是說它是一個條件,或者不是那個條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.