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

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

下面是我要问的代码:

  1. int price = 0;
  2. boolean isFree = (price == 0);
  3. if (isFree) {
  4. price = 10;
  5. if (isFree)
  6. System.out.println("one");
  7. else
  8. System.out.println("two");
  9. }

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

3phpmpom

3phpmpom1#

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

  1. isFree = (price == 0);

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

voase2hg

voase2hg2#

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

tez616oj

tez616oj3#

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

  1. int price = 0;
  2. boolean isFree = (price == 0);
  3. if (isFree){
  4. price = 10;
  5. System.out.println("one");
  6. }
  7. else{
  8. System.out.println("two");
  9. }
r7xajy2e

r7xajy2e4#

因为在定义isfree变量时,它的值设置了一次。如果希望isfree变量有另一个值,则需要设置它。
您可以将isfree的定义更改为方法:

  1. private boolean isFree(int price) {
  2. return price == 0;
  3. }

那么,任何时候你想知道价格是否免费,你可以打电话给 isFree 方法:

  1. int price = 0;
  2. if (isFree(price)) {
  3. price = 10;
  4. if (isFree(price))
  5. System.out.println("one");
  6. else
  7. System.out.println("two");
  8. }
展开查看全部

相关问题