不一样的for循环
来源:互联网 发布:暴力蟆蛤不可取知乎 编辑:程序博客网 时间:2024/05/17 06:44
for (int x=0;x<3; x++) { System.out.println("这是循环体"); }
这是一种很常见的写法,但是使用for循环,我们都形成了一种固化的思维,其实for循环也可以很不一样。
for循环的格式是这样的:
for(初始化表达式;循环条件表达式;循环后的操作表达式) { 执行语句;(循环体) }
如果我们这样写一个for循环:
for(System.out.println("1");System.out.println("2");System.out.println("3")) {System.out.println("4"); }
编译没有通过,并且编译器提示我们,第二个表达式应该是一个Boolean类型。以上我们提到for循环的格式,第二个应该是一个条件表达式,正如编译器提示我们的那样,应该是一个真值或者假值,如果为真,则循环执行,如果为假,那么就跳出循环,所以如上代码肯定是不行 的。
所以我们可以这样写:
for(System.out.println("1");true;System.out.println("3")) {System.out.println("4"); }这样写编译能够通过,但是恒真的条件会让代码陷入死循环。(我们不可以写恒假的表达式,如果写一个恒假的表达式编译会报错)
我们可以看到是3和4进行了循环结果的输入,并没有循环输出1,为了能够清楚看到for循环的执行顺序,我们把代码稍微改一下:
int x=0; for(System.out.println("1");x<3;System.out.println("3")) {System.out.println("4");x++; }
输出结果是 1 4 3 4 3 4 3,我们看到1只输出了一次,第一个条件是初始化表达式,它只执行一次;它执行完之后,判断第二个条件是否为真,如果为真,执行循环体,循环体完毕,执行第三个表达式。我们画个图表示执行顺序是这样的:
所以其实我们只需要有一个控制循环的条件表达式(第二个表达式)就可以了,初始化表达式和循环之后的操作表达式其实是可以不用写的,初始化可以写在循环外面,操作表达式可以写在循环体里面
int x=0; for(;x<3;) { System.out.println("4");x++; }但是如果我们的x变量如果只作为循环增量控制,那最好不要这么写,还是要把定义写在初始化表达式里,这样如果for循环结束,x这个变量空间也就释放了,不再占用内存空间,如果把变量定义在循环外,那么它会在循环结束还一直占用内存,不利于系统 的优化。
我们知道有这种写法:
for(;;){ 执行语句;(循环体) }循环的条件表达式默认为true,所以这是最简单的无限循环的写法。
在实际应用中,我们可能会遇到这种情况:
for循环初始化多个变量,循环结束后的语句有多个
for (int a=0,b=10;a<=5&&b>=5;a++,b-- ) {
System.out.println("a="+a+",b="+b);
}
for循环和while循环可以互换,但两者格式上的不同也决定了两者有所差别,比如之前提到的变量的作用域。当变量值作为循环增量存在时,区别就体现出来了,如果只作为 循环增量,用for比较好,变量被释放,不占用内存空间。
- 不一样的for循环
- matlab for循环 比较不一样
- 不一样的循环队列
- 不一样的视角,不一样的Kinect for Windows 2.0
- 【for循环】增强的for循环
- 不一样的Python(6)——循环
- 不一样的JavaScript(1)——循环
- 【九度】题目1415:不一样的循环队列
- 九度 1415 不一样的循环队列 【数据结构】
- loop语句中输出每次长度不一样的循环结果
- for循环的疑问
- for循环的漏洞。
- 有意思的for循环
- 截然不同的for循环!
- for循环的应用
- 增强的for循环
- Python的for循环
- for循环的遍历
- HBase中的HMaster、HRegionServer、Zookeeper
- Unity CustomFont (怎么制作图片文字)
- http、https 等 常用默认端口号
- Java使用IKAnalyzer进行敏感词过滤
- 初识类和对象
- 不一样的for循环
- SRM593 Div1Medium MayTheBestPetWin
- mysql 优化之开启慢查询并分析原因
- C#的WebApi 与 EasyUi的DataGrid结合生成的可分页界面
- 博为峰JavaEE技术文章 —— Hibernate 指南(4)Hbm文件
- 数位DP
- C++内置数组和array的比较
- Java Math.round()函数小结
- LeetCoder 4. Median of Two Sorted Arrays (有序数组合并的中位数)