先上代码
@Test
public void testBasic(){
int num = 50;
num = num++;
System.out.println(num);
}
结果输出是50,如果你已经知道,无需往下看了。
Java的后缀++的实现方式与C/C++不同,以上述代码为例,运行步骤如下
- 执行num++,原始num创建副本temp,原始num自增1,此时temp=50,原始num=51,然而num++是返回副本,也就是返回temp。
- 执行赋值,这一步是temp赋值给num,赋值之前,num=51,temp=50,所以赋值之后num依旧为50
如何验证以上说法?去编译器试试下面一段代码
@Test
public void testBasic(){
int num = 50;
num = num++;
num = num++;
num = num++;
System.out.println(num);
}