您的位置:首页 > 其它

前缀++ 和 后缀 ++ 的深刻理解

2016-10-22 10:46 363 查看
以前只知道自加放在前面和放在后面的区别,是先赋值后自加和先自加后赋值的区别,却不知道,如果没有赋值

运算,变量直接参与运算的区别,总是以为如果直接参与运算的话,应该是 自加符号 放在前面和后面是没有区别的,在前几天写程序的过程中突然发现了bug ,总是找不到问题,后来一步步的查看才知道自己以前的理解是错的,特意就做了个总结提醒自己,这也是容易犯错的地方,总是想当然。

例如下面的代码输出就说明了这个问题

@Test
public void testAddSelf(){
int a = 3;
int b = 3;
System.out.println("自加符号放在后面》》"+ a++);
System.out.println("自减符号放在前面》》"+ ++b);
}


出结果是 :

从结果就可以看出来 如果直接使用变量的情况下,自加放在变量之前和之后是不同的,深入探索之后发现,其实java为了实现自加这种运算操作,起始在底层的封装中应该是分为了好几步的,一个 自加符号 如果放在变量之前 例如 a++ 可以分为 这样的几步 ① a = a; ② a = a + 1; 如果把自加符号放在 变量之前的话, 那么应该等价于 ① a = a + 1; ② a = a; 即一个自加符号应该是分为了这么几个原语赋值操作,其中比较重要的应该就是使用变量的时间发生在那一步而已,对比就可以发现,如果是直接使用变量的情况下, 时间分割点发生在第二步上,但是之后,第二步会在使用完该变量的时候执行,所以,如果该变量没有直接参与运算,那么结果应该是相同的。 因为在一个分号语句中,这两步之间并没有使用该变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: