由于i++和i--的使用会导致值的改变,所以在处理后置的++和--的时候,java的编译器会重新为变量分配一块新的内存空间,用来存放原来的值,

而完成赋值运算之后,这块内存会被释放。

(1)对于j= i++的情况

i的原始值存放在后开辟的内存中,最后将这个值赋给j,进行j = i++运算之后,j会得到i的值,而i又将自加,所以,在释放内存之后,原来存放j和i的地方将得到的值分别是:j(此时的值等于初始i的值)和i(i自加后的值)。

public static void main(String args[])

{

int j = 0;

int k = 0;

for(int i = 0; i < 100; i++)

{

j = k++;

}

System.out.println(j);

}

运行结果是99。接下来对其进行分析:

每一次的循环结束,用来保存i的原始值的内存的数据会被销毁,然后i的新的值又会被放在一段新的内存中,在进行上述的循环,所以最终能够实现j的数据的增加。

(2)对于i= i++的情况

总结:

Java编译器每次遇到自增(指的是i++)、自减(指的是i--)运算符的时候都会开辟一块新的内存空间来保存赋值之前j的值,即为缓存变量,然后再将这个换成变量的值赋给左边的变量。

扩展:

微软的windows下的visualstudio编译的结果和java不同,但在gcc等其他的c语言编译器下,结果和java是一样的,千万要注意,由于有些人使用的是c语言的编译器但不是windows下的编译器,结果仍然和java的一致,但在windows下的编译运行结果却不一样,希望能引起读者的注意。

java 中j= i_java中 i = i++和 j = i++ 的区别相关推荐

  1. Java的i =i_java中i = i++和i =++i的深入讲解

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

  2. java for list i_Java中ArrayList的fori和foreach效率比较

    1. list的元素为Integer [代码实例1] public static void main(String[] args) { List list = new ArrayList(); int ...

  3. java for 嵌套_Java中的for循环嵌套

    Java嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构.whiledo.while.for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,如最常见的在for循环中嵌套for循环, ...

  4. java去重复的集合_如何去除Java中List集合中的重复数据

    1.循环list中的所有元素然后删除重复 public class duplicatRemoval { public static List removeDuplicate(List list){ f ...

  5. Java实现算法导论中最长公共子序列(LCS)动态规划法

    1.问题: 求两字符序列的最长公共字符子序列LCS 2.求解:动态规划法 动态规划的思路就是用一个矩阵来记录两个字符串中所有位置的两个字符之间的匹配情况,若是匹配则为1,否则为0.然后求出对角线最长的 ...

  6. Java实现算法导论中凸包问题Jarvis步进法

    对于凸包的理解,参考http://www.cnblogs.com/Booble/archive/2011/02/28/1967179.html,说的还是比较深入浅出. 凸包问题的Jarvis步进法,其 ...

  7. java 判断 中文字符_java中判断字符串中是否有中文字符

    package com.meritit.test; public class TestChart { public static void main(String[] args) throws Exc ...

  8. 阿里《Java开发手册》中的 1 个bug!

    本来打算写一篇<阿里巴巴为什么不允许日志输出时,使用字符串拼接?>的文章,主要是想从性能方面来说此问题,可在文章写到一半进行性能测试时,却发现了一个异常问题,实际测试的结果和手册上描述的结 ...

  9. java char 打印_Java中char[]输出不是内存地址的原因详解

    前言 Java中共有八种基本数据类型:byte,int,short,long,float,double,char,boolean. 计算机中的基础数据单位是bit, 1byte=8bit. 数据类型 ...

最新文章

  1. 【Unity】12.5 Navmesh Obstacle组件
  2. FPGA之道(72)提高设计的综合性能(四)提高设计的移植性与保密性
  3. Java虚拟机对类加载的处理机制
  4. zookeeper+kafka集群安装之中的一个
  5. pico8 掌机_使用Pico-8构建自己的复古游戏
  6. vue项目统一响应_Vue响应式原理及总结
  7. android键盘多线程bug,按键精灵多线程运用,检测卡死线程,短信api调用,通知功能...
  8. 李彦宏回应百度落后:我们擅长技术含量高的
  9. android高德地图自动缩放比例,【Android】高德地图 缩放级别及像素以及地图上的点转化成屏幕上的点...
  10. 7-6 What is a computer? (5 分)
  11. 项目搭建系列之一:使用Maven搭建SpringMVC项目
  12. 国内开发商品基金的一些设想
  13. datatable的数据进行组内排序_极客算法训练笔记(六),十大经典排序之希尔排序,快速排序...
  14. javascript高级程序设计读书笔记——事件总结
  15. weblogic安装
  16. phpmywind 数据记录查询
  17. C/C++趣味代码-------狸猫换太子
  18. Python:loc和iloc的区别
  19. JavaScript学习第十一天(Date、定时器)
  20. 这些行业注意了:“谨防互联网门户钓鱼,知名行业已经中招”。

热门文章

  1. 物资管理系统c语言运行程序,C语言实现仓库物资管理系统.pdf
  2. dep指定版本 go_Go 包管理工具-dep
  3. “unzip”不是内部或外部命令,也不是可运行的程序或批处理文件
  4. 拉线分切质量在线检测系统
  5. Python 3 mysql 简介安装
  6. 《数据结构与抽象:Java语言描述(原书第4版)》一1.1 什么是包
  7. HTML十进制字符编号
  8. 《Storm技术内幕与大数据实践》一第1章 绪论
  9. 《Java多线程编程核心技术》——1.5节sleep()方法
  10. 重置User Profile