关于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.作用范围不一样<重点>***局部 ...
随机推荐
- 初学Vue.js,用 vue ui 创建项目会不会被鄙视
全栈的自我修养: 6使用vue ui进行vue.js环境搭建 It is only with the heart that one can see rightly. What is essential ...
- ELK5.6.4+Redis+Filebeat+Nginx(CentOS7.4)
下载地址: Elasticsearhc: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.4.tar.gz ...
- 为PhpStorm添加Laravel 代码智能提示功能
php artisan clear-compiled //清除bootstrap/compiled.php php artisan ide-helper:generate //为 Facades 生成 ...
- Zookeeper集群部署及报错分析
安装 下载压缩包 解压 修改zoo.cfg文件 创建myid文件 启动 自启动配置 有时间再补hhh 报错处理 很荣幸的遇到了大部分报错,日志再zookeeper目录的bin下的zookeeper.o ...
- Python read和write方法
Python read和write方法: read(): 从文件中读取字符串 注:Python 字符串可以是二进制数据,而不仅仅是文字. 语法: 文件对象.read([count]) count:打开 ...
- PHP is_finite() 函数
实例 判断一个值是否为有限值: <?phpecho is_finite(2) . "<br>";echo is_finite(log(0)) . "&l ...
- PHP strcoll() 函数
实例 比较字符串: <?php高佣联盟 www.cgewang.comsetlocale (LC_COLLATE, 'NL');echo strcoll("Hello World!&q ...
- PHP crc32() 函数
实例 输出 crc32() 的结果:高佣联盟 www.cgewang.com <?php $str = crc32("Hello World!"); printf(" ...
- luogu P4948 数列求和 推式子 简单数学推导 二项式 拉格朗日插值
LINK:数列求和 每次遇到这种题目都不太会写.但是做法很简单. 终有一天我会成功的. 考虑类似等比数列求和的东西 帽子戏法一下. 设\(f(k)=\sum_{i=1}^ni^ka^i\) 考虑\(a ...
- 5.15 省选模拟赛 容斥 生成函数 dp
LINK:5.15 T2 个人感觉生成函数更无脑 容斥也好推的样子. 容易想到每次放数和数字的集合无关 所以得到一个dp f[i][j]表示前i个数字 逆序对为j的方案数. 容易得到转移 使用前缀和优 ...