我正在使用下面的免费文本来学习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。