前缀++ 和 后缀 ++ 的深刻理解
来源:互联网 发布:matlab 中文论坛 知乎 编辑:程序博客网 时间:2024/06/06 00:43
以前只知道自加放在前面和放在后面的区别,是先赋值后自加和先自加后赋值的区别,却不知道,如果没有赋值
运算,变量直接参与运算的区别,总是以为如果直接参与运算的话,应该是 自加符号 放在前面和后面是没有区别的,在前几天写程序的过程中突然发现了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; 即一个自加符号应该是分为了这么几个原语赋值操作,其中比较重要的应该就是使用变量的时间发生在那一步而已,对比就可以发现,如果是直接使用变量的情况下, 时间分割点发生在第二步上,但是之后,第二步会在使用完该变量的时候执行,所以,如果该变量没有直接参与运算,那么结果应该是相同的。 因为在一个分号语句中,这两步之间并没有使用该变量。
0 0
- 前缀++ 和 后缀 ++ 的深刻理解
- 字符串的前缀和后缀
- 理解前缀++ 后缀++
- 前缀和后缀和
- bash 变量的前缀和后缀
- 关于英语前缀和后缀的区别
- 视图解析器的前缀和后缀
- 前缀++和后缀++
- 前缀和后缀表达式
- 前缀、中缀和后缀
- 前缀++和后缀++
- session和cookie的最深刻理解
- session和cookie的最深刻理解
- session和cookie的最深刻理解
- 关于WM_ERASEBKGND和WM_PAINT的深刻理解
- 关于WM_ERASEBKGND和WM_PAINT的深刻理解
- WM_ERASEBKGND和WM_PAINT的深刻理解 .
- session和cookie的最深刻理解
- 用户登录与注册表单验证代码
- kafka 初学搭建
- MySQL添加/删除主键、外键、唯一键、索引、自增
- select查询返回值类型和返回空类型是not in和exists的区别
- TCMalloc的使用与源码剖析之六---------TCMalloc中内存分配流程
- 前缀++ 和 后缀 ++ 的深刻理解
- 数据类型之枚举
- 工作已定 结束招聘季的奔波
- NOIP初赛准备:第6课时
- 使用pandas.read_csv()中文乱码问题
- codeforces - E. Devu and Flowers & LightOJ 1124 Cricket Ranking(容斥定理+lucas定理)
- 微信公众平台开发(十二) 发送客服消息
- NOIP初赛准备第7课时
- 使用多种方法求两个数的平均数