簡體   English   中英

為什么布爾表達式的值不改變? (JAVA)

[英]Why doesn't the value of the boolean expression change? (Java)

以下是我要詢問的代碼:

int price = 0;
boolean isFree = (price == 0);

if (isFree) {
     price = 10;
     if (isFree)
         System.out.println("one");
     else
         System.out.println("two");
}

因此,我只想知道為什么當價格變量更改為10時isFree變量仍然為true。換句話說,為什么價格變量切換為10而又不影響布爾表達式?

boolean isFree = (price == 0);初始化后, boolean isFree = (price == 0); isFree變量確定為true

即使price已更改,它也不會更改,除非您明確更改它(例如再次調用boolean isFree = (price == 0); )。

因為在定義isFree變量后才對其值進行一次設置。 如果希望isFree變量具有另一個值,則需要對其進行設置。

您可以將isFree的定義更改為方法:

private boolean isFree(int price) {
    return price == 0;
}

然后,只要您想知道價格是否免費,都可以調用isFree方法:

int price = 0;

if (isFree(price)) {

    price = 10;

    if (isFree(price))
        System.out.println("one");
    else
        System.out.println("two");
}

它保持不變,因為您在第一次比較布爾變量后就不再對其進行檢查。 如果你還有另一個

isFree = (price == 0);

在檢查價格並將價格重新分配給10之后,那將是錯誤的。

通過使用兩個isFree語句,您基本上是在取消條件,從而使其變為true(靜態),而不檢查動態的新條件。

int price = 0;

boolean isFree = (price == 0);

if (isFree){
 price = 10;
 System.out.println("one");
}
else{
 System.out.println("two");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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