Java控制if else语句



我正在使用下面的免费文本来学习java入门,我很难理解代码段之间的差异:

http://math.hws.edu/eck/cs124/downloads/javanotes7-linked.pdf

示例1

    int x;
    x = -1;
    if (x < 0)
        x = 1;
    else
        x = 2;
示例2

    int x;
    x = -1;
    if (x < 0)
        x = 1;
    if (x >= 0)
        x = 2;

例1中,x = 1;在例2中,x = 2。

在右边,如果-1不是>或= 0,那么输出不应该是1吗?有人能解释一下为什么输出是2吗?

一旦第二个if语句被求值,x第一个语句已经生效——所以x的值现在是1。

if (x < 0)
   x = 1;

if (x >= 0) //x is 1 because you've already evaluated the above!
   x = 2;

else关键字创建互斥的分支,只能执行一个。所以如果你有这个,行为将是你所期望的:

if (x < 0)
   x = 1;
else if (x >= 0)
   x = 2;

在例1中,只执行x = 1;x = 2;语句中的一个,因为它使用了if...else语句。

在示例2中,这两个语句都将被执行,因为它使用了两个单独的if语句,并且在计算它们时两个条件都为真。

第二个例子中;首先,执行第一个if条件:

x = -1;
if (x < 0) x = 1;

x小于0,所以x等于1。

当你进入第二个if条件时:

if (x >= 0) x = 2;

x = 仍然 1,且1大于0,因此x = 2。

最新更新