以下是我要询问的代码:
int price = 0;
boolean isFree = (price == 0);
if (isFree) {
price = 10;
if (isFree)
System.out.println("one");
else
System.out.println("two");
}
所以我只想知道为什么isFree
变量在price变量更改为10时仍然保持为真。换句话说,为什么price变量切换为10而不影响布尔表达式?
答案 0 :(得分:1)
通过boolean isFree = (price == 0);
初始化后,isFree
变量被确定为true
。
即使更改了price
,它也不会更改,除非您进行了明确更改(例如再次调用boolean isFree = (price == 0);
)。
答案 1 :(得分:1)
因为定义您的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");
}
答案 2 :(得分:0)
它保持不变,因为您在第一次比较布尔变量后就不再对其进行检查。如果你还有另一个
isFree = (price == 0);
检查价格并将其重新分配为10后,将为假。
答案 3 :(得分:0)
通过使用两个isFree语句,您基本上是在取消该条件,从而使其成为true(静态),而不检查动态的新条件。
int price = 0;
boolean isFree = (price == 0);
if (isFree){
price = 10;
System.out.println("one");
}
else{
System.out.println("two");
}