很多人都知道 i++ 和 ++i 的区别

  • a = i++;

    1. a = i;
    2. i = i+1;
  • a = ++ i;
    1. i = i + 1;
    2. a = i;

但碰到 i = i ++;的时候很多人就懵了? i是原来的值,还是 i+1 ?

答案是 原来的值。

其中的原理其实很简单,Java在执行自增一类的操作的时候是会产生一个中间缓存变量

原理解释 :

i++ 代码:

int i = 0;
int a = i ++ ; 结果:i = 0 ; a = 0; 结果解释: a = i ++; 其实是拆分成3条语句,而不是两条 1. int temp = i;
2. i = i + 1;
3. a = temp; ++i 代码: int i = 0;
int a = ++i ; 结果:i = 1 ; a = 1; 结果解释: a = ++ i ; 其实是拆分成3条语句,而不是两条 1. i = i+1;
2. int temp = i;
3. a = temp; i = i++ 代码: int i = 0;
int i = i ++ ; 结果:i = 0 ; 结果解释: a = i ++ ; 其实是拆分成3条语句,而不是两条 1. int temp = i;
2. i = i + 1;
3. i = temp; i = ++i 代码: int i = 0;
int i = ++ i ; 结果:i = 1 ; 结果解释: i = ++ i ; 其实是拆分成3条语句,而不是两条 1. i = i + 1;
2. int temp = i;
3. i = temp;

Java 自增原理的更多相关文章

  1. Java自增原子性问题(测试Volatile、AtomicInteger)

    这是美团一面面试官的一个问题,后来发现这是一道面试常见题,怪自己没有准备充分:i++;在多线程环境下是否存在问题?当时回答存在,接着问,那怎么解决?...好吧,我说加锁或者synchronized同步 ...

  2. Java事务的原理与应用

    Java事务的原理与应用 一.什么是Java事务 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (isolation ...

  3. 深入Java核心 Java内存分配原理精讲

    深入Java核心 Java内存分配原理精讲 栈.堆.常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同.本文将深入Java核心,详细讲解Java内存分配方面的知识. Java内存分 ...

  4. paip.java UrlRewrite 的原理and实现 htaccess正则表达式转换

    paip.java UrlRewrite 的原理and实现 htaccess正则表达式转换 #---KEYWORD #-正则表达式 正则表达式 表示 非指定字符串开头的正则 排除指定目录.. 作者 老 ...

  5. Java虚拟机工作原理详解 (一)

    一.类加载器 首先来看一下java程序的执行过程. 从这个框图很容易大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘当中.然后你在命令行中输入 javac YourClassNam ...

  6. Java虚拟机工作原理详解

    原文地址:http://blog.csdn.net/bingduanlbd/article/details/8363734 一.类加载器 首先来看一下java程序的执行过程. 从这个框图很容易大体上了 ...

  7. Java爬虫搜索原理实现

    permike 原文 Java爬虫搜索原理实现 没事做,又研究了一下爬虫搜索,两三天时间总算是把原理闹的差不多了,基本实现了爬虫搜索的原理,本次实现还是俩程序,分别是按广度优先和深度优先完成的,广度优 ...

  8. Java虚拟机工作原理具体解释

    一.类载入器 首先来看一下java程序的运行过程. 从这个框图非常easy大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘其中.然后你在命令行中输入 javac YourClass ...

  9. Java基础知识强化之多线程笔记05:Java程序运行原理 和 JVM的启动是多线程的吗

    1. Java程序运行原理:     Java 命令会启动Java 虚拟机,启动 JVM,等于启动了一个应用程序,也就是启动了一个进程.该进程会自动启动一个 “主线程” ,然后主线程去调用某个类的 m ...

随机推荐

  1. String<-->int

    String s = "123); int a = Integer.parseInt(s); String b = String.valueOf(a); Integer i = 100; 自 ...

  2. oracle数据库更改字符集为utf-8,亲测有效

    >shutdown immediate; (把database停了) >startup mount; (把database重开) >alter system enable restr ...

  3. Fizz Buzz 面试题

    在CSDN上看到一篇文章<软件工程师如何笑着活下去>,本来是想看对这个行业的一些评价和信息,不曾检索到关于Fizz Buzz的面试题,上网搜了一下,顿感兴趣.留下此文,以表回忆. java ...

  4. centos6删除nginx

    1.ps -ef|grep nginx 查看nginx进程 2.找到nginx相对应的位置 3.停止nginx服务: 4.删除nginx安装的相关路径(根据自己安装的情况来删除) 如果是yum安装,就 ...

  5. 删除zabbix数据库日志

    #!/bin/bashuser="root"passwd="361way"timedate=`date -d $(date -d "-90 day&q ...

  6. opencv学习之路(34)、SIFT特征匹配(二)

    一.特征匹配简介 二.暴力匹配 1.nth_element筛选 #include "opencv2/opencv.hpp" #include <opencv2/nonfree ...

  7. .babelrc和babel.config.js的相同配置不能合并

    项目内部已经有了babel的配置文件babel.config.js module.exports = { presets: ["@vue/app"], }; 然后由于要按需引入el ...

  8. P3321 [SDOI2015]序列统计

    思路 首先有个挺显然的DP \[ dp[i][(j*k)\%m]+=dp[i-1][j]\times dp[i-1][k] \] 想办法优化这个DP 这个dp也可以写成这样 \[ dp[i][j]=\ ...

  9. jQuery的offset、position、scroll,元素尺寸、对象过滤、查找、文档处理

    jQuery_offset和position var offset = $('.xxx').offset() console.log(offset.left.,offset.top)xxx相对于页面左 ...

  10. HackerRank-Python攻城歷程-3.List( Find the Second Largest Number )

    if __name__ == '__main__': n = int(input()) arr = map(int, input().split()) print(sorted(list(set(ar ...