本文主要是介绍Java陷阱解惑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、自增陷阱
陷阱:
下述程序的运行结果是多少?
@Test
public void test自增陷阱() {
int expected = 10;
int count = 0;
for (int i = 0; i < expected; i++) {
count = count++;
}
System.out.println(count);
Assert.assertTrue(expected == count);
}
结果是count=0不是预期的10。
解惑:
count++的返回值是count自增前的值。Java对自增的处理过程是:先把count的值拷贝到临时变量区,然后对count变量+1,最后返回临时变量区的值。
// count = count++ 可以用下述代码来理解执行过程:
int temp = count;
count = count + 1;
return temp;
补充:
不过这个问题在不同的语言环境下会有不同的结果。比如在C++中,count=count++与count++是等效的,而在PHP中则保持着与Java相同的处理方式。
这篇关于Java陷阱解惑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!