Java中i++,++i 和i= i+ 1的区别
Java中i++,++i都表示 i = i+1
i++是先是使用 i的原值,然后再原值的基础上加1.
++i是先在原值的基础上加1,然后在使用i的值。
直接看一个示例:
public class Test1 {public static void main(String [] args){int i = 0,j;j = i++; //i++ 先使用i的值,所以j = 0,然后执行i自增1,此时i等于1System.out.println("j = " + j+",i = "+i);}
}
Output:
j = 0 , i = 1
public class Test2 {public static void main(String [] args){int i = 0,j;j = ++i; //++i 先执行i加1,此时i等于1,然后把i的值赋给j,j等于1System.out.println("j = " + j+",i = "+i);}
}
Output:
j = 1 , i = 1
上面两个例子都很好理解。
public class Test3{public static void main(String[] args){int i = 0;for(int j = 0;j < 5; j++){i = i++;System.out.println("i =" + i);}}
}
本以为会输出:i = 0i = 1i = 2i = 3i = 4
可是实际上输出的是:
Output:
i = 0
i = 0
i = 0
i = 0
i = 0
可是为什么输出都是0呢????
public class Test {public static void main(String[] args){int i = 0;for(int j = 0;j < 5; j++){i = ++i;System.out.println("i =" + i);}}
}
Output:
i =1
i =2
i =3
i =4
i =5
因为Java采取了中间变量缓存机制!
![](/assets/blank.gif)
int temp = i; //先使用i的值
i = i + 1;
i = temp;
在Test4中 i = ++ i 相当于:
i = i + 1; //先自增1,再使用i的值
int temp = i;
i = temp;
Java中i++,++i 和i= i+ 1的区别相关推荐
- Java中,一切皆是对象——java中的对象类型与基本数据类型的区别
起因:取一个list给另一个list赋值,然后在另一个list中取出进行修改.list其中类型为对象时,String时,基本数据类型时. [java中的对象类型与基本数据类型的区别] #声明和实例化 ...
- java堆和栈 常量池_GitHub - han-guang-xue/difference-of-stack-heap-pool: Java中堆、栈和常量池的区别...
Java中堆.栈和常量池的区别 栈 堆 常量池的概念 首先我们先了解一下概念,Java把内存分成两种,一种叫做栈内存,一种叫做堆内存. 栈内存 存放基本类型的变量数据和对象类型的引用(请注意存放的是引 ...
- Java中Array和ArrayList之间的9个区别
array和ArrayList都是Java中两个重要的数据结构,在Java程序中经常使用. 即使ArrayList在内部由数组支持,了解Java中的数组和ArrayList之间的差异对于成为一名优秀的 ...
- java中的NIO和IO到底是什么区别?20个问题告诉你答案
摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...
- java中list,set,map集合的区别,及面试要点
Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...
- java中*和**的作用 以及 /和/*和/**的区别
一.java中*和**的作用 "*"就表示了所有的文件,但是"*"并不包括子目录下的文件: "**"匹配包含任意级子目录中所有的文件: 二. ...
- 解析java中方法的重载和重写之间的区别与联系
解析java中方法的重载和重写之间的区别与联系 1 不同点 1.1 方法重写是在不同的类中(父子类),方法重载是在同一类中 1.2 方法重载最初的目的是构造方法的多样化,方法重写的目的是让重写的方法满 ...
- java final 变量 回收_java入门教程-Java中final,finally,finalize三个关键字的区别
final 当这个关键字修饰一个类时,意味着他不能派生出新的子类,也就是说不能被继承,因此一个类不能被同时声明为abstract和final.当final修饰变量或者方法时,可以保证他们在使用中不会被 ...
- 浅谈Java中的Set、List、Map的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...
- Java中抽象类、接口、父类直接的区别与联系
抽象类与接口的区别: 1)抽象类是一个只有变量或方法申明的类,这些变量(属性)和方法都是抽象类型的.抽象类没有对方法的实现. 2)接口则是一个只有方法申明.没有方法的实现,接口的方法也同样是抽象方法, ...
最新文章
- ArcGIS对AutoCAD操作的图文教程
- web API简介(二):客户端储存之document.cookie API
- python web自动化_Selenium+Python Web自动化
- vscode请更新includepath_VS Code Java 九月更新!Coding Pack for Java 带来一键安装新体验!...
- javascript学习系列(9):原数组发生变化的情况
- python判断正负的函数_Python |在计算操作的函数内将负数转换为正数?
- 微软面试题1、把二元查找树转变成排序的双向链表
- W3C 宣布:WebAuthn 成为正式 Web 标准
- cad上样条曲线上的点太多了_学习CAD,我总结了五个阶段,你是那个段位?
- 老顽童java模拟器_在这款神还原的小霸王模拟器上,我终于玩到了20年前的老游戏,真香...
- 基于深度学习的实时噪声抑制——深度学习落地移动端的范例
- html 公式编辑器,基于web的在线复杂公式编辑器的实现
- 零基础转行到IT,怎么选择适合的职业?
- JAVA学习笔记——BLOB类型和数据批量操作
- 华为云——开发者技能测评
- 我爱Flask之url_for()方法和HTTP请求
- 报告出炉:清北毕业生都去哪了?
- 怎么把php字幕导入视频,怎么往视频加广告还有字幕 字幕怎么导入视频里|视频字幕制作软件怎么把字幕嵌入视频...
- python爬pdf的曲线_Python爬取读者并制作成PDF
- linux命令ps -ef输出结果,Linux ps 命令
热门文章
- 文件操作——修改文件名
- Linux Kernel 2.6.9源码分析 -- send/recieve 报文
- 数字经济时代的网络安全发展形势分析与趋势展望
- 从不温不火到炙手可热:语音识别技术简史
- Web应用技术(第十周和第十一周/3h)
- UE风格化Day5-Rizom展UV的一些问题
- python电商项目介绍_电商大数据项目-推荐系统实战(一)
- 5位数的数字黑洞是多少_目前对于6174数字黑洞现象是否有合理的解释或证明?...
- oracle 19c RAC 19.0升级到19.16
- ASTM F2613-19儿童折叠椅和凳子强制性安全标准