为什么布尔表达式的值不会改变? (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)的主要内容,如果未能解决你的问题,请参考以下文章