关于Java中for循环的i++和++i区别
我们应该都知道i++和++i的区别是:
++i是先执行 i = i +1 再使用 i 的值,而 i++ 是先使用 i 的值再执行 i = i + 1;
for循环的执行顺序如下:
for(a;b;c)
{
d;
}
进入循环执行a;//只是进入的时候执行
执行b; //条件为真才执行d,不然跳出for了
执行d;
执行c;
再回到第2步开始执行
来看下面的实例:
for(int i = 0; i < 10;i++){
System.out.println(i);
}
相当于:
for(int i = 0; i < 10;){
System.out.println(i);
i++;
}
2.for(int i = 0; i<10; ++i){
System.out.println(i);
}
相当于:for(int i =0; i < 10;)
{
System.out.println(i);
++i;
}
在循环体中,i++和++i的作用是一样的。
打印出来的信息是:
0
1
2
3
4
5
6
7
8
9
打印信息证明了i++和++i的作用是一样的
但是肯定有一定区别的,所以把循环耗时也打印出来了。
循环次数 = 100的时候:
i++的时间是:5
++i的时间是:3
循环次数 = 1000的时候:
i++的时间是:25
++i的时间是:21
循环次数 = 10000的时候:
i++的时间是:179
++i的时间是:130
没错,就是运行时间的差别。在Java中i++语句是需要一个临时变量取存储返回自增前的值,而++i不需要。这样就导致使用i++时系统需要先申请一段内存空间,然后将值塞如进去,最后不用了才去释放。多了这么一系列操作时间。
大家可以仔细咀嚼一下我们开头的这句话:++i是先执行 i = i +1 再使用 i 的值,而 i++ 是先使用 i 的值再执行 i = i + 1;
一个是先执行然后在使用 i 的值,一个是先使用 i 的值再执行,运行时间的快慢可想而知。这是博主私人经验,有错的地方可留意探讨谢谢。
关于Java中for循环的i++和++i区别的更多相关文章
- java中for循环的6种写法
有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考. package ForLoop; import java.util.ArrayList; import java.util.Itera ...
- java 中,for、for-each、iterator 区别
java 中,for.for-each.iterator 区别: 无论是在数组中还是在集合中,for-Each加强型for循环都是它们各自的普通for循环的一种"简写方式",即两者 ...
- Java中Array与ArrayList的10个区别
Array和ArrayList都是Java中两个重要的数据结构,在Java程序中经常使用.并且ArrayList在内部由Array支持,了解Java中的Array和ArrayList之间的差异对于成为 ...
- 转 Java中final、finally、finalize的区别与用法
Java中final.finally.finalize的区别与用法 1.简单区别:final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承.finally是异常处理语句结构 ...
- Java中public,private,protected,和默认的区别
Java中public,private,protected,和默认的区别 1.private修饰词,表示成员是私有的,只有自身可以访问: 2.protected,表示受保护权限,体现在继承,即子类可以 ...
- 【Java学习笔记之二十九】Java中的"equals"和"=="的用法及区别
Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: String str1 = new String(" ...
- java中public与private还有protect的区别
java中public与private还有protect的区别 总是忘记.
- Java中的基本类型和引用类型变量的区别
Java中的基本类型和引用类型变量的区别 学了一年多,说实话你要我说这些东西我是真说不出来是啥意思 基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. 引用类型: ...
- JAVA中局部变量 和 成员变量有哪些区别
JAVA中局部变量 和 成员变量有哪些区别 1.定义的位置不一样<重点>***局部变量:在方法的内部成员变量:在方法的外部,直接写在类当中 2.作用范围不一样<重点>***局部 ...
随机推荐
- 解决智慧城市发展困扰:Web 3D 智慧环卫 GIS 系统
前言 智慧环卫,依托物联网技术与移动互联网技术,对环卫管理所涉及到的人.车.物.事进行全过程实时管理,合理设计规划环卫管理模式,提升环卫作业质量,降低环卫运营成本,用数字评估和推动垃圾分类管理实效.智 ...
- Bug--slfj4依赖冲突
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/F:/Spring%20p ...
- sql数据管理语句
一.数据管理 1.增加数据 INSERT INTO student VALUES(1,'张三','男',20); -- 插入所有字段.一定依次按顺序插入 -- 注意不能少或多字段值 如只需要插入部分字 ...
- Skill 脚本演示 ycLayerExcel.il
https://www.cnblogs.com/yeungchie/ ycLayerExcel.il 用于 Tape-out 流程,获取当前用到的所有 lpp 等信息,并按照自定格式输出为 Excel ...
- C/C++编程笔记:一张思维导图,带你总结C语言全部知识点!
很多小伙伴想要好好地学习一下C语言的知识,但是又不知道怎么学,应该学哪一些C语言的知识,笔者在网上看到了这一张C语言的比较完善的C语言的学习路线图,有兴趣的小伙伴可以保存起来哈! C语言是面向过程的, ...
- 配置ssh互信
配置基于密钥认证的免密登录 用到的命令: ssh-keygen:创建公钥和密钥,会生成id_rsa和id_rsa.pub两个文件 生成ssh密钥后,密钥将默认存储在家目录下的.ssh/目录中.私钥和公 ...
- RocketMQ文章
实战:RocketMQ削峰,这一篇就够了 https://juejin.im/post/5ea159e4f265da47f0794da5
- 通过MyBatis操作数据库
MyBatis是一款优秀的持久层框架,同样也是做OR Mapping的.与JPA不同,MyBatis里面需要我们自己来定制sql. MyBatis和JPA的选择 其实如果业务比较操作比较简单使用JPA ...
- JQuery插件,轻量级表单模型验证
附上源码和Demo段 var validataForm = (function(model) { model.Key = "[data-required='true']"; mod ...
- IDEA插件配置推荐
一.配置 [自动编译]如下图配置:推荐指数[***] [忽略大小写]说明:IDEA默认是匹配大小写,此开关如果未关,你输入字符一定要符合大小写.比如敲string是不会出现代码提示或只能补充.但是如果 ...