问题描述
谁能给我一种调试以下示例的方法:
public class Example1 {
public static void main(String[] input) {
int i = 0;
// i = i++ + i++; // prints 1
// i = i++ + i++ + i++; // prints 3
i = i++ + i-- + i++; // prints 1
System.out.print(i);
}
}
由于每个示例都是一行代码,因此使用调试不是解决方案...我正在尝试在 Java OCA 8 考试中使用这样的代码。
感谢您的帮助
解决方法
让我们分解你的第一个例子:
int i = 0;
i = i++ + i++;
第一个 i++
的计算结果为 0
。 i
的新值现在是 1
。第二个 i++
的计算结果为 1
,i
的新值现在是 2
。接下来是两个后缀增量表达式的相加:0 + 1 = 1。最后,您将此总和分配给 i
,用总和的结果 (2
覆盖其临时值 (1
) }}).
其他示例非常相似,我让 OP 自己完成它们。
,很简单,只要记住后增一元运算符是先使用前一个值再自增,所以下次使用时,自增后的值就变成前一个值,以此类推。
考虑这个简单的例子;
i = 0;
j = 2 + i++;
// j = 2 + 0 (previous value of i) i.e. 2 BUT
// i is now 0 + 1 i.e. 1 (new value of i)
System.out.println(i); // This will now print 1.