为什么布尔表达式的值不改变? (Java)

时间:2018-12-07 03:41:02

标签: java variables if-statement boolean expression

以下是我要询问的代码:

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而不影响布尔表达式?

4 个答案:

答案 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");
}