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