文章目录
前言
其实Java有趣的地方还是非常多的,不要觉得它是一个死板板的编程语言,其实它有自己的生命力,是一个非常好用的工具,能实现我们所想所思的东西,哎,一下话如决堤之水,滔滔不绝,话题止住,进入这次的主题——循环,而这次的循环分为三篇文章来说下。
一、循环结构概述语句
循环语句就是在满足一定条件的情况下反复执行某一个操作。在Java中提供了三个最常用的循环语句:for循环、while循环、do…while循环。
二、for循环、while循环、do…while循环应用场景分析
1、for循环
用于执行已知循环次数的语句
2、while循环
用于执行未知循环次数的语句。只有满足条件才循环。
3、do…while循环
用于执行未知循环次数的语句。不管是否满足条件,都至少会执行一次循环。
其实个人感觉用得最多的是前两个循环,do…while循环用得要少一点点,不过可能是我还没遇到那种特定的场景也说不一定哈。
三、for循环
1.for循环语句格式
for(初始化表达式;条件表达式;循环后的操作表达式){
循环体;
}
2.关于for循环的执行流程(单个for循环)
2.1流程
1、执行初始化语句
2、执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
3、执行循环体语句
4、执行循环后的操作表达式
5、回到步骤2继续循环
这个流程的排序是建立在4循环后的表达式先运行再自增(i++)与之相比的有一个先计算再自增(++i)
2.2例子(代码实现)
在这个例子中我会在for循环的对应位置上标上对应的流程步骤,方便方便大家加深理解
代码如下(示例):
public class Test01 {
public static void main(String[] args) {
// 在我们没有学过for循环及其他循环是打印5次hello world,我们基本都是这样做的
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
System.out.println("------这是一条华丽的分割线-------");
// 使用for循环,打印5次hello world
// 初始化条件 判断条件 循环后的表达式
for(int i = 0; i < 5; i++) {
// 循环体语句
System.out.println("hello world");
}
}
}
代码如下(输出):
hello world
hello world
hello world
hello world
hello world
------这是一条华丽的分割线-------
hello world
hello world
hello world
hello world
hello world
小结
其实不难看出for循环大大的节约了时间及算法的整体复杂度,还有适应性也就是Java中的代码的健壮性,这还是只是输出5次哦,如果一百次,一千次,一万次呢,甚至100万次呢,您复制粘贴还能行吗,而for循环只需要改一个判断条件就行了。
3.多重for循环(详解!重要!理解!)
3.1双重for循环——打印直接三角形(嵌套循环)
代码如下(示例):
public class Triangle {
public static void main(String[] args) {
getStartTriangle(7);// 在同一个类中调用getStartTriangle,输出int类型的实参
}
public static void getStartTriangle(int rows) {// 给予一个int类型的形参
for(int i = 1;i<=rows;i++) { // 建立外层for循环,初始条件为1,判断条件为是否小于参数rows,循环后的表达式为i++
for(int z = 1;z<=i;z++) {//建立内层for循环,初始条件为1,判断条件为是否小于外层for循环的i,循环后的表达式为z++
System.out.print("*");// 这是内循环的的输出,其中print表示输出不换行
}
System.out.println();// 这是外循环的输出,这里的功能是外循环一次是换行一次
}
}
}
代码如下(输出):
*
**
***
****
*****
******
*******
小结
从这个代码演示的结果并不是很重要,我们应该注重的是那两个for循环的嵌套是怎么回事,是怎么个运行状态,接下来就这个例子,开始进行这两个for循环的嵌套是怎么运行的来好好剖析一下。
3.2关于打印直接三角形双重for循环的剖析(干货)
代码如下(测试):
public class Test02 {
public static void main(String[] args) {
for(int i = 1;i<=4;i++) { //外层循环
for(int z = 1;z<=i;z++) { // 内部循环
System.out.println("i="+i);
System.out.println("z="+z);
System.out.println("------这是一条华丽的分割线-------");
}
}
}
}
代码如下(输出):
i=1
z=1
------这是一条华丽的分割线-------
i=2
z=1
------这是一条华丽的分割线-------
i=2
z=2
------这是一条华丽的分割线-------
i=3
z=1
------这是一条华丽的分割线-------
i=3
z=2
------这是一条华丽的分割线-------
i=3
z=3
------这是一条华丽的分割线-------
i=4
z=1
------这是一条华丽的分割线-------
i=4
z=2
------这是一条华丽的分割线-------
i=4
z=3
------这是一条华丽的分割线-------
i=4
z=4
------这是一条华丽的分割线-------
小结
其实从输出的结果大概就可以知道,外循环循环一次其实内循环的次数是不同的需要根据外循环来调整。
第一轮循环
就这个例子来看比如外循环为i为初始值1是,由于是i++,所以直接进入内循环,z = 1,1<=1,内循环循环完成,z自增1,此时z = 2,再进行内循环的判断,2!<=1,不满足条件,整个双重循环的结束第一轮,于是此时才是外循环i,开始自增,i= 2。
第二轮循环
此时的初始i = 2, 由于是i++,先计算再自增,直接进入内循环,此时的z又要从新从初始值开始z = 1,开始进入条件判断1<=2,所以结束本次内循环,z自增为2,又回到判断语句,z<=i即2<=2,结束本次计算,开始z自增为3,再进行判断但是此时3>2了,所以本次大循环结束,开始i自增为i = 3,
第三轮循环…
以此类推
总结
其实本人一开始就是因为这个例子,才开始看懂双循环是怎么个运行流程,随之就慢慢看懂其他的多重循环,其实基本原理基本都是一样的,所以特别将这个例子提出来给大家分享,个人感觉说得还是有点潦草,望大佬勿喷,有宝贵的意见能够分享出来给我。谢谢!