一、流程控制
流程控制语句(必须写在代码块中,否则无效导致编译报错)
流程控制语句的学习小技巧:
1.记住流程控制语句的语法格式
2.记住流程控制语句的执行流程
3.精通流程控制语句的实际应用
分支结构
条件判断语句if
格式
- if(条件判断语句){语句体}
- if(条件判断语句)else{语句体}
-
- 与三元运算的区别
-
-
- 实际开发中推荐使用if语句,if语句的格式与具体可以编辑多行代码,三元的话输出只有一个值,有局限性;
-
- if(条件判断语句)else if(条件判断语句){语句体}else{语句体}
执行流程
- 执行条件判断 false直接结束,ture进行下个循环。
- 执行语句体。
条件判断语句switch
格式
swtich(数据值){
case 数据值1:
语句体1;
break;
case 数据值2:
语句体2
break;
default:
语句体n;
break;
}
执行流程
- 确认switch的数据值是多少。
- 选择数据1的值进行匹配看是否陈工。
- 匹配成功执行语句体1,执行break语句跳出循环。匹配失败,选择数据体2进行匹配。
- 当选择所有的数据值都匹配失败的话,执行default语句中的语句体,执行break语句跳出循环。
注意事项
- switch()中数据值支持的数据类型:
-
- 基本类型:支持int数据,byte、short、char都可自动转换为int类型进行。
- 引用类型:
-
-
- JDK 5.0新增枚举类型。
- JDK 7.0新增String类型。
-
- switch语句中的default语句可以省略不写,推荐写上。
- default可以与case位置互换不影响运行。
- switch语句的结束有两个条件。
-
- break关键字。
- swtich语句结束的}。
- switch中的break可以不写,但是这样可能会导致传统效果。
if和switch语句的区别
- 实际开发中更推荐使用if,因为switch语句无法直接判断数据的范围。
- 内存角度分析,switch语句相比if执行效率较高,但是在硬件过剩的今天可以忽略不计。
循环结构
for语句
格式
for(初始化语句;循环条件语句;迭代语句){循环体语句};
初始化语句:声明和初始化循环的循环变量
循环条件语句:循环进行的前提条件
迭代语句:循环过程中的后续操作
循环体语句:重复执行多次的代码
执行流程
- 执行初始化语句生成变量。
- 将初始化的变量值代入循环条件语句进行判断,ture继续执行,false结束循环。
- 执行循环体语句。
- 执行迭代语句。
- 将迭代后的变量代入循环条件语句中判断,ture继续执行,false结束循环。
- 跳回3。
class demo{
public static void main(String[] args){
int sum = 0;
for(int i = 1;i <= 100;i++){
if(i % 2 == 0){
sum += i;
}
}
System.out.println(sum);
}
}
/*
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。
153 = 1*1*1 + 5*5*5 + 3*3*3
*/
class Demo{
public static void main(String[] args){
for (int i = 100;i < 10000;i++){
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100 % 10;
if (i == ge*ge*ge + shi*shi*shi + bai*bai*bai){
System.out.println(i);
}
}
}
}
/*
分析以下需求,并用代码实现:
(1)打印出四位数字中个位+百位=十位+千位并且个位数为偶数,千位数为奇数的数字,
并打印符合条件的数字的个数
(2)符合条件的数字,每行显示5个,用空格隔开,打印格式如下:
1012 1034 1056 1078 1100
1122 1144 1166 1188 1210
//......
符合条件的数字总共有: 165个
*/
class Demo{
public static void main(String[] args){
int flage = 0;
for (int i = 1000;i < 10000;i++){
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100 % 10;
int qian = i / 1000 % 10;
if((ge + bai == qian +shi) && (ge % 2 == 0) && (qian % 2 != 0)){
System.out.print(i + " ");
flage++;
if (flage % 5 == 0){
System.out.println();
}
}
}
System.out.println("符合条件的数字共有:" + flage + "个");
}
}
while语句
循环格式
while(循环条件){循环体语句};
执行流程
- 确认条件为ture还是false。
- ture执行循环体语句,false跳出循环结束。
- 进行第一步。
衍生扩展格式
while(循环条件){循环体;迭代语句};
class Demo{
public static void main(String[] args){
int zhi = 1;
int ci = 0;
int zhufeng = 88488600;
while(zhi <= zhufeng){
zhi *= 2;
ci++;
}
System.out.println(ci + "-次数" + zhi + "-高度");
}
}
dowhile语句
循环格式
do{循环体语句}while{循环条件语句};
执行流程
- 执行循环体语句
- 进入循环条件判断
- ture返回执行1,false退出循环
衍生for语句
do{循环体语句;迭代语句}while(循环条件语句);
死循环
含义
一直执行的循环代码
分类
for死循环
for(;;){执行代码};
while死循环
while(ture){执行代码};
dowhile死循环(不常用 忽略不计)
do{执行代码}while(ture);
注意
实际开发中更推荐使用while的死循环格式。
区别
- 执行流程不同
-
- for和while先判断后执行,dowhile先执行后判断。
- 循环体循环次数不同
-
- 已第一次判断就无法运行举例,for和while均执行0次,dowhile执行1次。
- 实际应用场景不同
-
- for常用在已知循环次数的情况下,while常用在不清楚循环次数的情况,dowhile基本不用。
流程控制代码块
调用结构:方法
注意事项
当流程控制语句体的行数仅有一句话时 {}可以省略不写,建议写上,适用于if for while dowhile。Switch不行。
二、控制语句
含义
控制“流程控制语句”和“流程控制代码块”的语言。
分类
break关键字
应用场景
- switch语句
- 循环语句
语句特点
- 结束switch语句
- 结束循环语句
continue关键字
应用场景
循环语句中
语法特点
结束本次循环,继续下一次循环
注意事项
在同一个控制语句内的后面不能直接编写代码,因为永远无法执行,系统会因此报错。
嵌套语句
含义
一个循环语句内存在另一个循环语句,语句往往代指的是for语句中的嵌套
注意事项
- 外层循环初始化值执行了1次。
- 内层循环的初始化值执行了(外层循环次数)次。
- 内层循环体执行了(外层循环次数*内层循环次数)次。
class demo{
public static void main(String[] args){
for(int i = 0;i < 24;i++){
for(int j = 1;j < 60;j++){
for(int y = 1;y < 60;y++){
System.out.println(i + "时" + j + "分" + y + "秒")
}
}
}
}
}