目录
一.程序流程控制有三大结构概述
在计算机,我们需要控制多句代码执行顺序的。此时就需要流程控制,在java中主要支持以下三种流程控制。
-
顺序结构:按照顺序从上至下逐行进行执行
-
选择结构:选择结构用于判断给定的条件,根据判断的结果来控制程序的流程。
-
循环结构:进行循环执行的。
其他我们前面讲的代码,就是按照写代码的顺序执行的,也就是说三大结构中,我们已经学过一个了,接下来我们就学习选择结构和循环结构
二.选择结构
选择结构用于判断给定的条件,如果添加满足才执行来控制程序的流程。主要有两大类if和switch
2.1 if选择结构
2.1.1基本的if结构
//基本语法:
if(判断语句){
执行语句;
}
判断条件:为布尔类型的值或者表达式
执行语句 :当满足条件才执行,可以是一个或者多个语句。
public static void main(String[] args) {
//1 直接是一个boolean
if(true){
System.out.println("常量满足条件,执行了!");
}
//2 放一个boolean类型变量
boolean b = true;
if(b){
System.out.println("变量满足条件,执行了!");
}
//3 放一个表达式
int i = 3;
if(!(i<2 && b)){
System.out.println("表达式满足条件,执行了!");
}
}
2.1.2 if-else结构
//基本语法
if(判断条件){
执行语句;
}else{
执行语句;
}
判断条件: 布尔类型的值或者表达式
执行语句:当条件满足时执行if中的语句 其他情况执行else中的语句
// 判断一个成绩分数 如果成绩分数大于90 输出 优秀 其它输出 继续努力
//定义成绩
int score = 68;
//判断成绩是否满足
if(score>=90){
System.out.println("优秀");
}else{
System.out.println("继续努力");
}
当然还有一些if - else if - else if -...- else;语句这些与if - else是相似的。出现这种情况我们一般并不常用这个而是用switch语句来表示。(当然如果出现if或者else后面只有一条执行语句时可以省略{},但是为了代码的规范性还是将{}加上。)
//基本语法
if(判断条件){
执行语句;
}else if(判断条件){
执行语句;
}.....else if(判断条件){
执行语句;
}else{
执行条件;
}
3. swtich选择结构
//基本语法
switch(key){
case v1:
执行语句;
break;
case v2:
执行语句;
break;
................
default:
执行语句
break;
}
/*key可以是局部变量也可是是常量,也可以是字符串
但是key的类型必须与v1相同。
*/
执行原理:
将key的值与v1的值相匹配,如果匹配就执行相应的执行语句,然后找到break跳出选择结构,如果都没有,就执行default中的语句,找到break跳出选择结构。
注意:
1.每个case之间是可以交换的不影响代码(但是一般为了规范还是按照顺序写)
2.default可以放在末尾
3.最后一个break可以省略(但是不建议省略还是得写上)
示例
public class _Swt {
public static void main(String[] args) {
String sex = "男";
//sex此时是一个字符串
switch (sex){
case "男"://所以case后面也必须是字符串
System.out.println("去男厕所");
break;
case "女":
System.out.println("去女厕所");
break;
default:
System.out.println("憋着回家上");
break;
}
}
}
三.循环结构
3.1循环的定义
可以理解位重复的去执行某件事情,但需要有一个终止条件,否则会形成死循环,导致内存溢出
3.2循环的分类
3.2.1 while循环
//语法
while(循环条件){
执行语句;
}
//循环条件:里面的值应该是一个boolean类型的值当循环条件的值为ture时则执行语句,
//当为false时则不执行语句,终止循环,所以循环条件应该为变化的,
//如果不变或者是一个常量则就会是死循环,或者不循环
流程图
示例:
/*打印1到10之间的数字*/
int i = 1;
while(i<11){
System.out.println(i);
i++;
}
---------------------------------
/*打印1到10之间的偶数*/
int j = 1;
while(j<11){
if(j%2==0){
System.out.println(j);
}
j++;
}
3.2.2 do-while循环
基本语法:
do{
执行语句
}whle(循环条件);
//他的逻辑是先执行一次do后面的语句,再判断循环条件是否为true,
//如果true,执行do后执行语句,如果为false终止循环。
示例:
/*打印1到10之间的数字*/
int i =1;
do{
System.out.println(i);
i++;
}while(i<11);
3.2.3for循环
基本语法:
for(初始化条件A;判断条件B;循环后语句C){
执行语句D;
}
//初始化条件A:初始化一个值,用来作为B中的判断条件
//判断条件B:布尔类型的值或者表达式
//循环后语句C:循环后执行的代码,目的是为了改变初始条件A的值,使B中条件不是一个固定的值
//执行语句D:当B中的判断条件满足,为true执行D,false,则不执行
/*for循环与while其实本身是差不多的只是格式不同,
他们的功能都是一样的,但是for循环代码的可读性比较高
所以我们常用for循环来控制循环语句*/
执行流程:
A---->B(true)---->D---->C
示例:
/*打印1到10之间的数字*/
for(int i=1;i<11;i++){
System.out.println(i);
}
//初始条件中变量的作用域只作用在循环体中
//所以System.out.println(i);只能写在循环体内
/*打印1到10之间的数字*/
for(int i=1;i<11;i++){
System.out.println(i);
}
System.out.println(i);//报错,i只作用于循环结构体中
3.3 循环控制语句
3.3.1 定义
对整个循环流程进行控制,可提前终止或跳出循环
3.3.2 控制语句的分类
3.3.2.1 break
/*作用:终止当前循环
示例:
*/
/* 一个循环 如果循环中出现了6 则终止循环 后面的也不再执行*/
for(int i=1;i<8;i++){
if(i==6){
break;
}
System.out.println(i);
}
3.3.2.2 continue
/*
作用:跳过当前循环,进行下一次循环
示例:
*/
/* 一个循环 如果循环中出现了6 则跳过循环 后面的继续执行*/
for(int i=1;i<8;i++){
if(i==6){
continue;
}
System.out.println(i);
}
3.3.2.3 return
/*
作用:终止当前方法
示例:
*/
/* 一个循环 如果循环中出现了6 终止当前的方法 后面的循环也不会被执行 循环外面的语句也不会被执行到*/
for(int i=1;i<8;i++){
if(i==6){
return;
}
System.out.println(i);
}
System.out.println("wwwww");