public class Main {
public static void main(String[] args) {
int i = 0;
i = i++;
System.out.println(i); i = ++i;
System.out.println(i); }
}

  运行结果:

0
1

 同样的逻辑代码在C++中的运行结果是不一样!

 这和jvm中的缓存机制有关,jvm有两个存储区,一个是暂存区(堆栈),另一个是变量区。

在执行 i = i++;这条语句的时候,jvm使用了中间变量缓存机制,其真是逻辑如下:

temp = i;
i = i + 1;
i = temp;

 在执行 i = ++i;这条语句的时候,逻辑如下:

i = i + 1;
temp = i;
i = temp;

 若是有兴趣可以查看一下字节码,可以更清晰的看到这个过程中堆栈中的变化。

java中的i++和++i区别的更多相关文章

  1. Java中Set Map List 的区别

    java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list   --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...

  2. Java中Comparable和Comparator接口区别分析

    Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...

  3. 转:Java中abstract和interface的区别

    转自:Java中abstract和interface的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java ...

  4. Java中this与super的区别【6】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激.请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing/ ...

  5. Java中堆和栈的区别(转)

    栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆.      Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new. ...

  6. 转:二十一、详细解析Java中抽象类和接口的区别

    转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...

  7. Java中Long与long的区别(转)

    Java中Long与long的区别(转) [本文转载自:http://www.cnblogs.com/bluestorm/archive/2012/04/22/2464739.html] 转载请联系原 ...

  8. java中堆和堆栈的区别

    java中堆和堆栈的区别(一) 1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取 ...

  9. Java中ArrayList与LinkedList的区别

    Java中ArrayList与LinkedList的区别 一般大家都知道ArrayList和LinkedList的区别: 1. ArrayList的实现是基于数组,LinkedList的实现是基于双向 ...

  10. java 标准输出与标准错误 out与 err 区别 用法 联系 java中的out与err区别 System.out和System.err的区别 System.out.println和System.err.println的区别 Java重定向System.out和System.err

    本文关键词: java 标准输出与标准错误    out与 err 区别 用法 联系  java中的out与err区别  System.out和System.err的区别 System.out.pri ...

随机推荐

  1. Repeater中使用倒计时

    <asp:Label ID="lblTime" runat="server" Text='<%# FormatDateString(Eval(&qu ...

  2. Animate自定义动画

    在jQuery中出了基本的动画之外,还有用户 可以自定义的函数,Animate() 用于创建自定义动画的函数. apI上指出: 这个函数的关键在于指定动画形式及结果样式属性对象.这个对象中每个属性都表 ...

  3. css修炼宝典

    前端岗位目前确实十分火热,但是就业压力也很大:前一段时间与大学同学交谈,他向我哭诉说去一个机构学习了前端工程师,我心底里为他高兴,因为他马上就可以月薪突破10K了,可是不幸的是他说去北京面试一个月,还 ...

  4. perl 正则表达式之漫游

    废话不多说了,直奔主题~ 一.简单模式进行匹配 将模式写在一对//中即可,匹配对象是$_ 元字符:圆括号()      进行模式分组 点号   .        能匹配任意一个字符,除换行符(\n)以 ...

  5. zBase --轻量级DOM操作库

    项目地址:ZengTianShengZ-github zBase-1.2.0 --v3 修复部分bug,添加AMD规范测试 zBase-1.1.0 --v2 对 v1 版本做了升级,优化DOM查找,简 ...

  6. 删除bin后,Eclipse重新编译项目

    今天做"用java.util.Properties类读写配置文件"Demo时,在编译项目时由于配置资源文件一起写入bin了.而Demo修改了配置文件,从新运行时配置文件不再更新,于 ...

  7. beauty

    至你我最美的邂逅 年意渐渐消失,一转眼元宵的炮竹将要响起,今天是贰零一七年二月九号,即是元宵节前两天,在这里我写下我这几天的收获. 离元宵节还有四天,我好久都没跟朋友一起认真的玩过,几天我去了我发小的 ...

  8. linux系统常用快捷键

    centos 命令快捷键: 挂起:Ctrl+s 解除挂起:ctrl+q 清屏:Ctrl+l 注销或退出:Ctrl+d 命令行光标移动: Ctrl+a 移动到命令行首 Ctrl+e 移动到命令行尾 Ct ...

  9. 购买的wemall 6.0商城系统源码分享

    使用方法 1.解压目录 2.cd wemall6 && npm i 3.配置config下的config.json 4.npm start 摒弃以往的开发框架thinkphp,使用no ...

  10. 1611: [Usaco2008 Feb]Meteor Shower流星雨

    1611: [Usaco2008 Feb]Meteor Shower流星雨 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1010  Solved: 44 ...