Java流程控制语句:
- 选择结构:if、switch
- 循环结构:for、while、do...while
- 跳转控制结构:return、continue、break
一、选择结构
1、if选择语句
语句格式:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体 2;
} ...{
}else{
语句体3;
}
if语句中只有关系表达式为true时才会执行,为false时执行else中的语句
if语句注意事项:
1、关系表达式可以很复杂,但是结果一定是boolean类型。
2、当语句体只有一行的时候,可以将大括号省略,但是有多行的时候,若省略了只有第一行是与if语句有关的,建议每次加上大括号。
3、可以在小括号后面加分号,但是这就说明了if语句没有语句体实现。
当if-else语句体是一个输出或者是其他没有值的语句体时候,无法转化为三目运算符
if练习题:
import java.util.Scanner;
class Test {
public static void main(String[] args) {
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选择语句
语句格式:
switch(表达式){
case 值1:
语句体1
break;
case 值2:
语句体2
break;
...
default:
语句体n
break;
}
运行流程:
严格按照先自上而下匹配case,当匹配到对应的case后,执行其中语句体,然后遇到break,结束整个switch语句; 当没有对应的case匹配的时候,就会执行default中的语句体,当遇到break的时候,结束整个语句体,和default语句位置无关。
使用switch语句的注意事项:
1、小括号中的表达式必须是byte,short,int,char,String,枚举其中一种,其他的不行。
2、case后面匹配的内容必须是一个常量值,不能是一个变量。
3、default语句必须要有吗?可以没有,但是可能程序不够严谨。
4、default语句位置必须是在所有的case后面吗?不一定,严格按照执行流程顺序。
5、break语句能不能不写?可以,但是会造成switch语句穿透,结果可能不是我们想要的。
switch练习题:
import java.util.Scanner;
class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请投入购买饮料的金额:");
int price = sc.nextInt();
switch(price){
case 1:
System.out.println("欢迎购买冰露");
break;
case 3:
System.out.println("欢迎购买可口可乐");
break;
case 5:
System.out.println("欢迎购买红牛");
break;
case 8:
System.out.println("欢迎购买哇哈哈");
break;
default:
System.out.println("请投入正确的金额");
break;
}
}
}
3、我们以后使用if选择语句还是switch选择语句呢?
1、if语句的使用场景
1)判断的条件是boolean类型的时候
2)判断的条件是一个范围的时候
3)判断一个值
2、switch语句的使用场景
判断一个常量值
二、循环结构
1、for循环
语句格式:
for(初始化条件语句;判断条件语句;控制条件语句){
语句体;
}
for循环使用注意事项:
1、初始化条件语句能不能不写?可以不写,判断条件语句一般来说也就没有了依据,就成了死循环。
2、初始化条件语句能不能写在for循环的外部作用域中?可以,作用域的区别。
3、判断条件语句能不能不写?可以,但是成了死循环。
4、控制条件语句能不能不写?可以,也成了死循环。
5、初始化条件语句只能定义一个变量吗?不是,可以一次性定义多个。
6、当循环体内容只有一行的时候,大括号可以省略,建议永远不要省略。
7、初始化条件只会执行一次。
for练习题:
class Test {
public static void main(String[] args) {
int count = 0;
for (int i = 100; i <= 999; i++) {
int baiWei = i / 100;
int shiWei = i / 10 % 10;
int geWei = i % 10;
if ((baiWei * baiWei * baiWei + shiWei * shiWei * shiWei + geWei * geWei * geWei) == i) {
System.out.println("水仙花数:" + i);
count++;
}
}
}
}
2、while循环
语句格式:
初始化条件语句;
while(判断条件语句){
语句体;
控制条件语句;
}
while注意事项:
1、以后遇到明确范围的需求的时候,使用for循环。
2、不明确循环范围的时候,使用while循环。
3、从内存使用效率来说,while循环结束后,定义的变量依旧是在的,占用内存 而for循环定义的变量随着for循环的结束等待被回收,推荐用for循环。
4、从循环的次数来说,for循环和while循环的次数是一样的。
while练习题:
// 我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?( while循环)
public class Test {
public static void main(String[] args) {
int high = 884800;
int thickness = 1;
int count = 0;
while (thickness < high) {
thickness *= 2;
count++;
}
System.out.println("共折叠了 " + count + " 次,纸张的厚度为:" + thickness+"米");
}
}
3、do...while循环
语句格式:
初始化条件语句;
do{
语句体;
控制条件语句;
}while(判断条件语句);
while循环是先进行一次判断,然后再进行循环体内容 而do...while循环,无论是否符合条件,都会先进行一次循环体内容,然后再根据判断条件来决定是否继续执行。
while和do...while的对比:
public class Test {
public static void main(String[] args) {
int i = 4;
while (i>5){
System.out.println("好好学习,天天向上!");
i++;
}
System.out.println("--------------------------------------");
int j = 4;
do{
System.out.println("好好学习,天天向上!");
j++;
}while (j>5);
}
}
三、跳转控制结构
1、return
注意事项:
1、return是作用在方法的内部中当做最后一个语句执行的。
2、主要作用是用于结束一个方法的,返回一个返回值。
3、一个方法只能有一个return生效。
2、continue
注意事项:
1、结束当次循环,继续后续循环。
2、单独使用没有任何意义,需要在循环的内部中使用。
3、break
注意事项:
1、单独使用没有任何意义,需要在switch语句或者循环语句中使用。
2、使用break作用是结束当前循环。
3、双重for循环跳出的话,可以给for循环起名字进行跳出。