文章目录
▌Java基础语法
〓 流程控制
■ 概述
○ 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对于运行结果有直接的影响。所以,必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现要完成的功能。
■ 流程控制结构的分类
○ 01.顺序结构
○ 02.选择(判断)结构
○ 03.循环结构
■ 顺序结构
◐ 概述
○ 即程序按照代码的顺序从上往下,从左往右依次执行的代码结构。
○ 顺序结构是最简单的流程控制结构,不需要特定的语句,程序的代码大多都是这样执行的。
public static void main(String[] args) {
//顺序执行,根据编写的顺序,从上到下运行
System.out.println(1);
System.out.println(2);
System.out.println(3);
}
■ 选择(判断)结构1_if
○ if语句共有三种格式。
■ if语句的第一种格式
if(关系表达式){
语句体;
}
◐ 执行流程
○ 首先判断关系表达式看其结果是true还是false
○ 如果是true就执行语句体1
○ 如果是false就不执行语句体1,直接结束
◐ 举例
public class Juli1 {
public static void main(String[] args) {
System.out.println("今天天气不错,正在压马路...突然发现一个网吧");
int age = 19;
if(age >= 18){
System.out.println("进入网吧,开始high!");
System.out.println("遇到了一群猪队友,开始骂街...");
System.out.println("感觉不爽,结账走人。");
}
System.out.println("未成年,回家吃饭");
}
}
■ if语句的第二种格式
if(关系表达式){
语句体1;
}else{
语句体2;
}
◐ 执行流程
○ 首先判断关系表达式看其结果是true还是false
○ 如果是true就执行语句体1
○ 如果是false就执行语句体2
◐ 举例
public class Juli2 {
public static void main(String[] args) {
int num = 13;
if(num % 2 == 0){//如果除以2能够余数为0,说明是偶数
System.out.println("偶数");
}else{
System.out.println("奇数");
}
}
}
■ if语句的第三种格式
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
...
}else if(关系表达式n){
语句体n;
}else{
语句体n+1;
}
◐ 执行流程
○ 首先判断关系表达式1看其结果是true还是false
○ 如果是true就执行语句体1
○ 如果是false就继续判断关系式表达2看其结果是true还是false
○ 如果是true就执行语句体2
○ 如果是false就继续判断关系式表达n看其结果是true还是false
○ …
◐ 举例
public class Juli3 {
public static void main(String[] args) {
int x = 2;
int y;
if(x >= 3){
y = 2 * x + 1;
}else if(-1 < x && x < 3){
y = 2 * x;
}else{
y = 2 * x - 1;
}
System.out.println("奇数");
}
}
■ 选择(判断)结构2_switch
◐ switch语句格式:
switch(){
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
◐ 执行流程
○ 首先计算出表达式的值
○ 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行过程中,遇到break会结束。
○ 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束。
◐ switch语句使用的注意事项:
○ 1.多个case后面的数值不可以重复。
○ 2.switch后面小括号当中只能是下列数据类型:
-------- 基本数据类型:byte/short/char/int
-------- 引用数据类型:String字符串、enum枚举
○ 3.switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。
-------- “匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”
◐ 举例
public class Juli4 {
public static void main(String[] args) {
int num = 1;
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("数据不合理");
break;//最后一个break语句可以省略,但是不建议省略
}
}
■ 循环结构
◐ 概述
○ 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
○ 循环,即事物周而复始的变化。
○ 循环结构,使一部分代码按照次数或一定的条件反复执行的一种代码结构。
◐ 分类
○ 1.for循环 —— 应用于循环次数已知的需求
○ 2.while循环 —— 应用于循环次数不固定的需求
○ 3.do…while循环 —— do先执行一次,while再判断一次
◐ 循环结构的基本组成部分,一般可以分为四部分:
○ 1.初始化语句:再循环开始最初执行,而且只做唯一一次。
○ 2.判断条件语句:如果成立,则循环继续;如果不成立,则循环退出。
○ 3.循环体:重复要做的事情内容,若干行语句。
○ 4.控制条件语句:每次循环之后都要进行的扫尾工作,每次循环结束之后都要执行一次。
■ 循环结构1_for
◐ 格式
for(初始化语句①;判断条件语句②;控制条件语句③){
循环体④
}
◐ 执行流程
○ 执行顺序:①②③④>②③④>②③④…②不满足为止。
○ ①负责完成循环变量初始化
○ ②负责判断是否满足循环条件,不满足则跳出循环
○ ③具体执行的语句
○ ④循环后,循环条件所涉及变量的变化情况
◐ 举例
public class Juli5 {
public static void main(String[] args) {
for(int i = 1;i <= 100;i++){
System.out.println("我错啦!");
}
System.out.println("程序停止");
}
}
■ 循环结构2_while
◐ 格式
//标准格式:
while(判断条件语句){
循环体;
}
//拓展格式:
初始化语句①;
while(判断条件语句②){
循环体③;
控制条件语句④;
}
◐ 执行流程
○ 执行顺序:①②③④>②③④>②③④…②不满足为止。
○ ①负责完成循环变量初始化
○ ②负责判断是否满足循环条件,不满足则跳出循环
○ ③具体执行的语句
○ ④循环后,循环条件所涉及变量的变化情况
◐ 注意事项
○ 1.初始化语句可以省略。
○ 2.控制条件语句可以省略。
◐ 举例
public class Juli6 {
public static void main(String[] args) {
int i = 1;//1.初始化语句
while(i <= 10){//2.判断条件语句
System.out.println("我错啦!");//3.循环体
i++;//4.控制条件语句
}
}
}
■ 循环结构3_do…while
◐ 格式
//标准格式
do{
循环体;
}while(判断条件语句);
//拓展格式
初始化语句①;
do{
循环体②;
控制条件语句③;
}while(判断条件语句④);
◐ 执行流程
○ 执行顺序:①②③④>②③④>②③④…②不满足为止。
○ ①负责完成循环变量初始化
○ ②负责判断是否满足循环条件,不满足则跳出循环
○ ③具体执行的语句
○ ④循环后,循环条件所涉及变量的变化情况
◐ 注意事项
○ 1.while小括号后的分号不可省略。
○ 2.do…while循环的循环体至少执行一次。
◐ 举例
public class Juli7 {
public static void main(String[] args) {
int i = 1;//1.初始化语句
do{
System.out.println("我错啦!");//3.循环体
i++;//4.控制条件语句
}while(i <= 10);//2.判断条件语句
}
}
}
■ 三种循环的区别
◐ 格式的不同
○ A.for循环各部分形成一个整体。
○ B.while和do…while的初始化语句与循环定义分离。
○ C.while、do…while的初始化语句,控制条件语句一般都会省略,而for循环一般不省略。
◐ 初始化语句的不同
○ A.定义位置不同。
○ B.作用域不同:
-------- a.for循环初始化语句仅限循环内使用。
-------- b.while和do…while的初始化语句可以在循环外使用。
◐ 循环体执行次数的不同
○ A.for和while执行 0~n 次。
○ B.do…while执行 1~n 次,即至少执行一次。
◐ 使用场景的不同
○ A.for和while可以互换,但while格式更简洁。
○ B.仅当循环体至少需要执行一次的时候,使用do…while。
■ 循环控制_break语句
◐ break关键字的用法有常见的两种:
○ 1.可以用在switch语句中,一旦执行,整个switch语句立刻结束。
○ 2.还可以用在循环语句中,一旦执行,整个循环语句立刻结束,打破循环。
public class Juli8 {
public static void main(String[] args) {
for(int i = 1;i <= 10;i++){
//如果希望第四次之后的都不要了,就要打断循环
if(i == 4){//如果当前是第4次
break;//那么久打断整个循环
}
System.out.println("Hello" + i);
}
}
}
◐ 关于循环选择的建议:
○ 凡是次数确定的场景多用for循环;其他多用while循环。
■ 循环控制_continue语句
◐ 概述
○ 继续,用于循环语句,表示结束本次循环,继续下次循环。
○ 一旦执行,立刻跳过当前循环剩余内容,马上开始下次循环。
◐ 举例
public class Juli9 {
public static void main(String[] args) {
for(int i = 1;i <= 10;i++){
if(i == 4){//如果当前是第4层
continue;//那么跳过当前次循环,马上开始下一次(第五层)
}
System.out.println(i + "层到了!");
}
}
}
■ 死循环_(Dead)
◐ 概述
○ 永远停不下来的循环,叫做死循环。
◐ 标准格式
while(true){
循环体;
}
◐ 举例
public class Juli10 {
public static void main(String[] args) {
while(true){
System.out.println("I Love Java!!!");
}
//System.out.println("Hello");
}
}
■ 循环嵌套
◐ 概述
○ 所谓循环嵌套,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是循环
嵌套。总共的循环次数 = 外循环次数 * 内循环次数。
◐ 格式
for(初始化语句①;判断条件语句②;控制条件语句③){
for(初始化语句④;判断条件语句⑤;控制条件语句⑥){
执行语句⑦;
}
}
◐ 执行流程
○ 执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥
○ 外循环一次,内循环多次。
○ 比如跳绳:一共跳5组,每组跳10个;5组就是外循环,10个就是内循环。
◐ 举例
public class Juli10 {
public static void main(String[] args) {
for(int hour = 0;hour < 24;hour++){//外层控制小时
for(int minute = 0;minute < 24;minute++){//内层控制小时之内的分钟
System.out.println(hour + "点" + minute + "分");
}
}
}
}