✨ 目录
▷ 流程控制之if分支
if
用来做逻辑分支的,判断不同逻辑范围时执行不同的代码段,主要有下面三种格式格式一:if(条件表达式) { 代码逻辑 }
是用来执行符合条件的代码逻辑格式二:if(条件表达式) { 代码逻辑1 } else { 代码逻辑2 }
是用来执行成立和不成立的代码逻辑格式三:if(条件表达式1) { 代码逻辑1 } else if(条件表达式2) { 代码逻辑2 } else { 代码逻辑3 }
是用来执行多个不同条件下的代码逻辑
▷ 流程控制之switch分支
switch
分支和if
的区别是switch
只能对比确定值,而if
是可以判断某个范围内的值是否符合条件- 所以
if
其实要比switch
更强大,但是对于多条件switch
分支看起来更加的一目了然
▷ switch分支之break穿透
- 在
switch
中每个判断中不能忘记写break
,不然会出现穿透现象 - 也就是会直接执行下一个判断中的代码,直至遇到
break
才会跳出分支 - 但是有时候如果多个分支中执行的代码是一样的,可以通过该方法减少代码量,看起来更加的简洁
▷ 流程控制之for循环
- 循环是在代码中控制一段代码执行多次的一种方法,主要有
for循环
、while循环
、do-while循环
- for循环的格式:
for (初始化语句; 循环条件; 迭代语句) { 重复执行的代码 }
- 比如打印
5次
的输出语句,如下
▷ 流程控制之while循环
while
循环跟for
循环其实功能完全是一样的,两者都能解决同样的循环问题- 但是有一点细微的区别就是,如果知道要循环几次,推荐使用
for循环
;如果不知道要循环几次,推荐使用while循环
- while循环的格式:
while (循环条件) { 重复执行的代码; 迭代语句; }
▷ 流程控制之while循环案例
- 可能上面并不能体会到与
for循环的区别
,那么可以做一个案例 - 案例:世界最高山峰珠穆朗玛峰高度是:8848.86米=8848860毫米,假如我有一张足够大的纸,它的厚度是0.1毫米。请问: 该纸张折叠多少次,可以折成珠穆朗玛峰的高度?
- 可以知道,一开始并不知道究竟要折多少次,才能达到要求,这时候就可以使用
while循环
来解答这道题 - 纸张
每折叠一次厚度加一倍
,然后厚度超过山峰退出循环即可
package tiny.geeker;
public class Test {
public static void main(String[] args) {
int count = 0; // 定义折叠次数
double thickness = 0.1; // 定义纸张厚度
while (thickness < 8848860) {
thickness *= 2; // 每折叠一次,厚度加一倍
count++;
}
System.out.println("总共需要次数为:" + count);
}
}
▷ 流程控制之do-while循环
do-while循环
与while循环
的区别其实就一点,while循环
因为循环条件在前面,所以会先判断循环条件再执行循环体里面的代码,而do-while循环
刚好相反,是先执行循环体后判断条件- do-while循环的格式:
do { 重复执行的代码; 迭代语句; } while (循环条件)
package tiny.geeker;
public class Test {
public static void main(String[] args) {
int i = 0;
do {
System.out.println("飞兔小哥");
i++;
} while (i < 5);
}
}
▷ 死循环
死循环:
就是循环条件写成了恒成立的时候,导致程序一直运行无法停下来的情况死循环
很容易造成内存泄漏,系统卡死等各种情况,所以谨慎使用死循环
- 由于条件恒成立,相当于写成了
2 > 1
,这种恒成立的情况也可以直接写成true
▷ 循环嵌套
循环嵌套:
是在循环中包含了另一套循环
package tiny.geeker;
public class Test {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println(" ");
}
}
}
▷ 循环关键字break和continue
- 在上面
switch
分支的时候,可以看到分支体有break
关键字,是用来跳出分支的,在循环中使用break
也就为了跳出循环体的 break:
直接跳出所有循环continue:
循环有很多次,仅仅跳过当前这一次,直接执行下一次的循环
package tiny.geeker;
public class Test {
public static void main(String[] args) {
int i = 0;
while (i < 5) {
i++;
if (i >= 3) break; // 大于3就跳出所有循环
System.out.println("飞兔小哥" + i);
}
System.out.println("---------------------");
int j = 0;
while (j < 5) {
j++;
if (j == 3) continue; // 跳出3的循环
System.out.println("飞兔小哥" + j);
}
}
}
▷ 随机数Random
- 随机数是官方提供的API,就是随机给你返回一个值,通常像在抽奖这种随机事件中使用的比较多
- 比如公司有5个人,奖品有一、二、三等奖,用户随机抽取奖品
package tiny.geeker;
import java.util.Random;
public class Test {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
Random r = new Random();
int level = r.nextInt(3) + 1;
System.out.println("用户" + i + "获得奖品等级:" + level);
}
}
}
▷ 随机数Random注意点
- 可以看到在使用
new Random()
中的方法时,使用的是nextInt()
这个方法是随机返回一个整数,如果填写了参数,就会返回[0, 参数)
之间的整数值,不包括参数本身,所以后面要加上1 - 当然除了
nextInt()
方法,还有nextFloat()
、nextBoolean()
、nextDouble()
方法可以使用,看字面意思就知道是随机返回浮点数、布尔值、小数的 - 案例:如何获得 65-91之间的数?