if语句中的Java布尔

if语句中的Java布尔,java,if-statement,boolean,Java,If Statement,Boolean,当我运行此代码时,我将值no作为输出。我不明白为什么布尔变量isNegative保持为true,而x被初始化为100。这是基于java的。谢谢你以后的帮助 boolean isNegative = (x < 0); if (isNegative) { x = 100; if (isNegative) System.out.println("no"); else System.out.println("yes"); } else System.out.

当我运行此代码时,我将值no作为输出。我不明白为什么布尔变量isNegative保持为true,而x被初始化为100。这是基于java的。谢谢你以后的帮助

boolean isNegative = (x < 0);
if (isNegative)
{
x = 100;
if (isNegative)
System.out.println("no");
else
System.out.println("yes");
}
else
System.out.println("maybe");
布尔值为负=(x<0);
如果(为负)
{
x=100;
如果(为负)
系统输出打印项次(“否”);
其他的
System.out.println(“是”);
}
其他的
System.out.println(“可能”);

因为您的布尔值在if语句之前初始化

因为您的布尔值在if语句之前初始化

因为
的值为负值
永远不会更改,所以在更改
x

boolean isNegative = (x < 0);
if (isNegative)
{
   x = 100;
   isNegative = (x < 0);
   if (isNegative)
      System.out.println("no");
   else
      System.out.println("yes");
}
else
    System.out.println("maybe");
布尔值为负=(x<0);
如果(为负)
{
x=100;
isNegative=(x<0);
如果(为负)
系统输出打印项次(“否”);
其他的
System.out.println(“是”);
}
其他的
System.out.println(“可能”);

因为
的值为负值
永远不会更改,所以在更改
x

boolean isNegative = (x < 0);
if (isNegative)
{
   x = 100;
   isNegative = (x < 0);
   if (isNegative)
      System.out.println("no");
   else
      System.out.println("yes");
}
else
    System.out.println("maybe");
布尔值为负=(x<0);
如果(为负)
{
x=100;
isNegative=(x<0);
如果(为负)
系统输出打印项次(“否”);
其他的
System.out.println(“是”);
}
其他的
System.out.println(“可能”);
,因为(x<0)是一个在运行时只计算一次的表达式。这个

boolean isNegative = (x < 0);
布尔值为负=(x<0);
只执行一次。在此之后,isNegative将始终为false(假设x已经为负值)。如果以后更改“x”,则需要重新计算或重新计算isNegative。

因为(x<0)是在运行时仅计算一次的表达式。这个

boolean isNegative = (x < 0);
布尔值为负=(x<0);

只执行一次。在此之后,isNegative将始终为false(假设x已经为负值)。如果以后更改“x”,则需要重新评估或计算isNegative。

我可能在重复其他人说过的话,但也许我可以添加一些内容。这个问题显示了对程序执行的误解,这是非常基本的

执行通过一系列语句进行。序列是由循环、方法调用等修改的,但这与这个答案并不密切相关

赋值(对变量)是一个计算值的语句,可能使用当前可用的其他值。它肯定不是一个等式的同一件事,它表明两个表达式表示同一件事

所以,在你的情况下

 isNegative = (x < 0);  
然后,当您想要测试
x
的当前值时,请使用
isNegative(x)


值得一提的是,编程意义上的“变量”概念是编程所特有的,许多著名的计算机科学家会说这是一个相当深刻的想法。

我可能在重复别人说过的话,但也许我可以补充一些东西。这个问题显示了对程序执行的误解,这是非常基本的

执行通过一系列语句进行。序列是由循环、方法调用等修改的,但这与这个答案并不密切相关

赋值(对变量)是一个计算值的语句,可能使用当前可用的其他值。它肯定不是一个等式的同一件事,它表明两个表达式表示同一件事

所以,在你的情况下

 isNegative = (x < 0);  
然后,当您想要测试
x
的当前值时,请使用
isNegative(x)


值得一提的是,编程意义上的“变量”概念是编程所特有的,有许多著名的计算机科学家会说这是一个相当深刻的想法。

当我运行这段代码时,我将值no作为输出。我不明白为什么布尔变量isNegative保持为true,而x被初始化为100-不,这不正确。您的代码将打印
可能
。更改
x
的值不会更改
isNegative
@ArvindKumarAvinash不,它不会更改(假设
x
最初小于0)。@KonradRudolph-OP在
布尔值isNegative=(x<0)之前没有提到
x
的值。假设
x
的默认值为
0
,它将打印
可能的
。假设
x
一开始小于
0
,那么它将打印
no
,这是对的。在数学上你是对的,但在Java中,
=
是(重新)定义的,不相等。
运行此代码时,我将值no作为输出。我不明白为什么布尔变量isNegative保持为true,而x被初始化为100-不,这不正确。您的代码将打印
可能
。更改
x
的值不会更改
isNegative
@ArvindKumarAvinash不,它不会更改(假设
x
最初小于0)。@KonradRudolph-OP在
布尔值isNegative=(x<0)之前没有提到
x
的值。假设
x
的默认值为
0
,它将打印
可能的
。假设
x
最初小于
0
,那么它将打印
no
,这是对的。在数学上你是对的,但在Java中,
=
是(重新)定义的,不相等。