for循环
for
循环是
Java
中最常用的循环。适用于知道循环次数的场
景。
for循环的语法格式
表达式1
for(;表达式2;){
循环体;
表达式3
}
或者
for(表达式1;表达式2;表达式3){
循环体;
}
for循环的执行流程
1.
首先执行表达式
1
,
表达式
1
通常写循环的初始化内容
,即循环的初始状态。表达式
1
只会执行一次。
2.
判断表达式
2
的真假。
表达式
2
是循环的判断条件
,表达式2的值为
true
,执行循环体,如果表达式
2
的值为
false
,则结束循环,执行循环之外的代码。
3.
循环体执行完毕之后,执行表达式
3
。
表达式
3
是循环的控
制条件,这个条件可以影响循环的次数
。
4.
表达式
3
执行完毕之后,回到步骤
2
继续判断。
表达式
2
的结果为
false
时,循环会结束。
随机数
在
Java
中使用
Random
类来产生随机数。具体使用步骤如下:
1.
导包。
----import java.util.Random;
2.
创建
Random
对象。
Random random = new Random();
3.
获取随机数。
int num = random.nextInt(10);-----[0,10)
随机数应用场景:验证码
while循环
while
是
Java
中第二常用的循环。
while
循环能实现
for
循环全
部的功能
,即:
while
循环可以替代
for
循环。除此以外,
while
循环还适用于不知道具体循环次数的循环
(只知道循环结束条件,但不清楚循环多少次结束。)
while
循环最大的特点:适用于不知道循环次数的循环。
在开发中,如果知道循环次数,往往使用
for
循环(因为
for
循环的格式比较简洁,书写比较方便),只有不知道
循环次数的时候,才使用
while
循环。
while循环的语法格式
while
循环的完整语法格式是:
循环的初始条件;//对应for循环的 表达式1
while(条件表达式){//对应for循环的 表达式2
循环体;//对应for循环的 循环体
循环增量;//对应for循环的表达式3
}
while循环的执行流程
1.
计算条件表达式的值。
2.
如果条件表达式的值为
true
,执行循环体。
3.
执行完循环体以后,回到步骤
1
。
4.
如果条件表达式的值为
false
,结束循环的执行。
while总结
1.
while
可以实现
for
循环的全部功能
2.
while
循环善于处理不知道循环次数的循环。
3.
开发中使用的是
while
的第二种功能。
do..while循环
do...while
是
Java
中第三种循环结构,是使用频率最低的循环结构。do..while
循环能实现
while
循环全部的功能
,do...while循环和
while
循环的唯一区别是,
do..while
循环会
至少执行一次循环
。
do..while循环的语法格式
do{
循环体;
}while(表达式);
注意:上述格式中,
while(
表达式
)
后面有一个分号。
do...while循环的执行流程
1.
执行循环体语句。
2.
判断表达式的值是否为
true
。如果为
true
,执行步骤
1
。
3.
如果表达式的值为
false
,结束循环。
while
循环是先判断条件在决定是否执行循环体
do..while
是先执行循环体再判断条件。即:至少执行一次循环体。
for、while、do..while区别
do..while
至少执行一次循环体。
for
循环中定义的变量
i
,只能在
for
循环里用,出了
for
循环就不能使用了。
对于
while
循环的
j
以及
do..while
循环的
k
来说,他们定义在了循环的外面,因此可以在循环结束后使用。
死循环
死循环,即无限循环
。循环一旦开始就永远不会停止。
在开
发过程中,应当避免死循环。
死循环示例-for循环
代码:
public static void main(String[] args) {
for( ; ; ) {
System.out.println("hello world");
}
System.out.println("end");//这行代码永远执
行不到
}
上面的示例,没有任何语句控制循环的结束。所以会无限打印hello world
,导致循环后面的代码永远执行不到。
注意:上述写法会在编译时报错
代码:
public static void main(String[] args) {
for(int i = 0 ; i != 10 ; i += 3 ) {
System.out.println("hello world");
}
System.out.println("end");//这行代码永远执
行不到
}
上面的示例,虽然表达式完整,但是
i != 10
会永远为真,因此也是一个死循环。导致for
循环后面的代码无法执行
死循环示例-while
代码:
public static void main(String[] args) {
int i = 0;
while(i < 100) {
System.out.println(i);
}
System.out.println("end");
}
上面的示例,也是一个死循环,
i
初始值是
0
,在循环体里没有任何操作去改变 i
的值,因此
i < 100
永远为真,循环会无限执行,while
循环后面的代码永远不会被执行到。
很多新手,在写
while
循环的时候容易漏写
i++
。
正是因为这个原因,通常使用
for
循环不使用
while
循环。
代码:
public static void main(String[] args) {
while(true) {
System.out.println("hello world");
}
}
这也是一个死循环。循环条件永远是
true
。
死循环示例-do..while
代码:
public static void main(String[] args) {
int i = 0;
do {
System.out.println(i);
}while(i < 100);
System.out.println("end");
}
上面的示例,和
while
死循环的案例一样,也是因为 缺少 i++。
代码:
public static void main(String[] args) {
do {
System.out.println("hello world");
}while(true);
}
这也是一个死循环。循环条件永远是
true
。
如何避免死循环
1.
对于知道循环次数的情形,使用
for
循环。
----for
循环的语法格式,表达式3
处写循环控制语句,不容易忘记。
while和do..while
容易忘记。
2.
写完代码以后,找临界值试试验证代码的正确性。
3.
借助
break
结束循环。
break、continue关键字
结束循环
结束循环的方式一共有
2
种:
1.
循环正常结束,即循环条件不再满足时,循环正常结束。
2.
强行结束循环,即
break
关键字。
在开发中无论是循环的正常结束还是通过
break
让循环结 束,都是非常常见的。
break关键字
break
关键字一共
2
个用途:
1.
用在
switch..case
语句中的每个
case
里,用于结束
switch
语 句。
2.
用在循环结构的循环体中,用于结束当前循环的执行。
---即:break
写在哪个循环里,就结束哪个循环。
如果
break
出现在循环体里,
break
用于结束当前循环。
如果循环体内,
break
后面还有别的代码,
break
后面的代码不会执行。----
仅限循环体内的代码。循环体外的代码可以正常执行。
如果循环次数尚未用完,执行到了循环体中的
break
语句,也是直接结束循环,未执行的循环次数不再执行。
break可以出现在
for
循环里,可以出现在
while
循环里,也可以出现在do..while
循环里。
break
的使用场景举例:
1.
从数组中查找某个数据,一旦找到,就结束循环。
---
数组是后面要学习的内容。
2.
用在死循环里,用于结束死循环(通常是达到了某个条件)。
3.
游戏里,将游戏中的怪物随机刷新在游戏地图里,如果怪物被刷新到了障碍物里(例如:河、山、树等),重新随机怪物的位置。
break
关键字通常情况下和
if
语句搭配使用。
continue关键字
continue
关键字的作用是用于结束本次循环开启下一次循
环
。例如:一共进行
10
次循环,但执行到第
5
次循环时执行 continue,会不再执行任何循环体,直接进入下一次循环。
continue
只是结束本次循环,而不是结束整个循环。
continue
通常情况下也是与
if
语句搭配使用。
break、continue总结
1. break
用于结束当前循环。
2. continue
用于结束本次循环。
3. break
、
continue
通常是与
if
语句连用。即某种条件满足时才break
或
continue
。
4. break
使用比较频繁,经常用在死循环里结束循环。或者用在for
循环里提前结束循环。
5. continue
很少使用。
循环标号
循环标号是指用于标识循环开始和结束的标识符,通常是一个合法的标识符。主要用于循环的情况,使得break
和continue可直接跳转到标签标记的位置
;
语法
变量名:for(...){
break/continue 变量名;
}
变量名:while(..){
break/continue 变量名;
}
变量名:do{
break/continue 变量名;
}while(...)
Debug断点调试
断点调试是开发中常用的调试技巧之一。
所谓的断点调试,指的是在程序的某个位置打上断点,程序在运行的过程中就会停在断点处,等待我们进行下一步的操作。
添加断点、移除断点
在代码行号的左侧,双击鼠标左键,即可添加上断点;再次双击鼠标左键,即可移除断点。
![](https://img-blog.csdnimg.cn/direct/6ad0214b2efe4070b9373d3d1ed70d75.png)
可以添加多少断点?
理论上来讲,每一行都可以添加断点。实际上我们只在关键代码处添加断点。
何为关键代码处?
1.
复杂业务逻辑代码的开头位置
2.for
循环的开始处
3.
容易出现错误的代码处。
如何调试代码
Debug
调试启动
![](https://img-blog.csdnimg.cn/direct/04a687639b074c4fa891fb759c105eb8.png)
或者
![](https://img-blog.csdnimg.cn/direct/0259623016d94196bb38548473de0990.png)
之后会进入调试控制台
![](https://img-blog.csdnimg.cn/direct/2abe804f3f40469f8d66c4d3cc86ae20.png)
控制台按钮含义
![](https://img-blog.csdnimg.cn/direct/17d2fa62727c44118a1dabb0926a8a63.png)
断点调试有什么用?
断点调试就像电影的慢镜头一样,能让你看到每一步是怎么执行的。能看到每一步执行后,程序中的数据发生了什么样的变化。例如:变量值的更新。
断点调试总结
断点调试是开发项目必须具备的技能。
一定要学会添加、删除断点,学会看断点下各个变量的变化。