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

问题描述 投票:1回答:4

以下是我要问的代码:

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

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

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

java variables if-statement boolean expression
4个回答
1
投票

boolean isFree = (price == 0);初始化之后,isFree变量被确定为true

即使更改了price,它也不会被更改,除非你明确地改变它(比如再次调用boolean isFree = (price == 0);)。


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

0
投票

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

isFree = (price == 0);

在检查并重新分配价格为10之后,那将是错误的。


0
投票

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

int price = 0;

boolean isFree = (price == 0);

if (isFree){
 price = 10;
 System.out.println("one");
}
else{
 System.out.println("two");
}
© www.soinside.com 2019 - 2024. All rights reserved.