簡體   English   中英

False boolean = True?

[英]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.

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