Java基础学习day03
简介:
本节讲解Java流程控制,涵盖分支结构(if、switch)与循环结构(for、while、do-while),介绍其语法、执行流程及应用场景,并解析break、continue用法与循环嵌套,助力掌握程序逻辑控制核心。
Java基础学习day03
程序流程控制
分支结构
1.if
- 根据条件的真或假,来决定执行某段代码。
- 三种不同的形式
- 首先判断条件表达式的结果,如果为true执行语句体,为 false 就不执行语句体。
- if (条件表达式) {代码块1;} else {代码块2}
- 首先判断条件表达式的结果,如果为true执行语句体1,为 false 就执行语句体2。
- if (条件表达式1) {代码块1} else if (条件表达式2) {代码块2} ... else {代码块n}
- 先判断条件1的值,如果为true则执行语句体1,分支结束;
- 如果为false则判断条件2的值 如果值为true就执行语句体2,分支结束;
- 如果为false则判断条件3的值 ...
- 如果没有任何条件为true,就执行else分支的语句体n+1。
public class IfDemo1 {
public static void main(String[] args) {
test1();
test2();
test3();
}
public static void test1() {
int age = 18;
if (age >= 18) {
System.out.println("可以上网");
}
System.out.println("玩泥巴去吧");
}
public static void test2() {
int money = 5;
if (money >= 10) {
System.out.println("付款成功");
} else {
System.out.println("余额不足");
}
}
public static void test3() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个分数:");
int score = sc.nextInt();
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 70) {
System.out.println("优良");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
}
}
2.switch
- 是通过比较值是否相等,来决定执行哪条分支。
- 执行流程
- 先执行表达式的值,再拿着这个值去与case后的值进行匹配。
- 与哪个case后的值匹配为true就执行哪个case块的代码,遇到break就跳出switch分支。
- 如果全部case后的值与之匹配都是false,则执行default块的代码。
- 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
- case给出的值不允许重复,且只能是字面量,不能是变量。
- 正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
- 存在多个case分支的代码是一样时,可以把代码写到一个case块,其他case块通过穿透性能,穿透到该case块即可,这样可以简化代码。
public class SwitchTest1 {
public static void main(String[] args) {
test();
}
public static void test() {
Scanner sc = new Scanner(System.in);
System.out.println("输入你的性别:");
String sex = sc.next();
switch (sex) {
case "男":
System.out.println("《重生之我在提瓦特当雷神》");
break;
case "女":
System.out.println("《重生之我的狐仙宫司大人》");
break;
default:
System.out.println("《重生之我的性别是沃尔玛购物车》");
break;
}
}
}
3.if与switch的区别与应用场景
- if在功能上远远强大于switch。
- 当前条件是区间的时候,建议使用if分支结构来实现。
- 当条件是与一个一个的值比较的时候,建议用switch更合适(格式良好,性能较好,代码优雅)。
循环结构
1.for
- for (初始化语句; 循环条件; 迭代语句) { 循环体语句(重复执行的代码); }
- 循环一开始,执行int i = 0 一次。
- 此时 i=0 ,接着计算机执行循环条件语句:0 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
- 此时 i=1 ,接着计算机执行循环条件语句:1 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
- 此时 i=2 ,接着计算机执行循环条件语句:2 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
- 此时 i=3 ,然后判断循环条件:3 < 3 返回false, 循环立即结束。
for (int i = 0; i < 3; i++) {
System.out.println("Hello World");
}
public class ForDemo1 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i < 6; i++) {
sum = sum + i;
}
System.out.println(sum);
}
}
2.while
- 初始化语句; while (循环条件) { 循环体语句(被重复执行的代码); 迭代语句; }
- 循环一开始,执行int i = 0 一次。
- 此时 i=0 ,接着计算机执行循环条件语句:0 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
- 此时 i=1 ,接着计算机执行循环条件语句:1 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
- 此时 i=2 ,接着计算机执行循环条件语句:2 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
- 此时 i=3 ,然后判断循环条件:3 < 3 返回false, 循环立即结束。
int i = 0;
while (i < 3) {
System.out.println("Hello World");
i++;
}
public class WhileTest2 {
public static void main(String[] args) {
double money = 100000;
double rate = 0.017;
double target = money * 2;
int year = 0;
while (money < target) {
money = money + (money * rate);
year++;
}
System.out.println(year);
}
}
3.for与while的区别与应用场景
- 功能上是完全一样的,for能解决的while也能解决,反之亦然。
- 使用规范:
- 知道循环几次:使用for;不知道循环几次建议使用:while。
4.do...while
- 初始化语句; do { 循环体语句; 迭代语句; } while (循环条件);
5.三种循环小结
- for循环 和 while循环(先判断后执行); do...while (先执行后判断)
- for循环中,控制循环的变量只在循环中使用。while循环中,控制循环的变量在循环后还可以继续使用。
6.死循环
- 定义:可以一直执行下去的一种循环,如果没有干预不会停下来。
- 写法:
for ( ; ; ) {
System.out.println("Hello World1");
}
while (true) {
System.out.println("Hello World2");
}
do {
System.out.println("Hello World3");
} while (true);
7.循环嵌套
- 定义:循环中又包含循环。
- 特点:外部循环每循环一次,内部循环会全部执行完一轮。
- 案例:
for(int i = 1; i <= 4; i++) {
System.out.println("*****");
}
break、continue
- break : 跳出并结束当前所在循环的执行。
- continue: 用于跳出当前循环的当次执行,直接进入循环的下一次执行。
- break : 只能用于结束所在循环, 或者结束所在switch分支的执行。
- continue : 只能在循环中进行使用。