为什么布尔表达式的值不改变( java 语)

noj0wjuj  于 2021-06-30  发布在  Java
关注(0)|答案(4)|浏览(378)

下面是我要问的代码:

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

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

所以我只想知道为什么 isFree 当价格变量变为10时,变量保持为真。换句话说,为什么price变量会切换到10而不影响布尔表达式?

3phpmpom

3phpmpom1#

它保持不变,因为在第一次比较布尔变量之后,不会再次检查它。如果你有另一个

isFree = (price == 0);

检查后,重新分配价格为10,那么它将是假的。

voase2hg

voase2hg2#

初始化后 boolean isFree = (price == 0); ,的 isFree 变量被确定为 true .
即使 price 已更改,除非您显式更改它(如调用 boolean isFree = (price == 0); 再次)。

tez616oj

tez616oj3#

通过使用两个isfree语句,您基本上取消了条件,从而使其为真(静态),而不是检查动态的新条件。

int price = 0;

boolean isFree = (price == 0);

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

r7xajy2e4#

因为在定义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");
}

相关问题