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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么布尔表达式的值不会改变? (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变量保持为真。换句话说,为什么price变量在不影响布尔表达式的情况下切换到10?

答案

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语句,您基本上可以取消条件,从而使其成为真(静态),而不是检查动态的新条件。

int price = 0;

boolean isFree = (price == 0);

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

以上是关于为什么布尔表达式的值不会改变? (JAVA)的主要内容,如果未能解决你的问题,请参考以下文章

JAVA条件语句之if...else

java if 语句默认

Java-Runoob:Java 条件语句

java 四个点是啥特殊运算符?

为啥没有定义 Java 的布尔原始大小?

为啥没有定义 Java 的布尔原始大小?