流程控制结构
- 程序控制结构是指以某种顺序执行的一系列动作,用于解决某个问题。程序可以通过控制语句来对程序实现选择、循环、转向和返回等流程控制。
- 程序控制结构包括:顺序结构、分支结构、循环结构。
顺序结构
顺序结构程序就是按语句出现的先后顺序执行的程序结构。计算机按顺序逐条执行语句,当一条语句执行完毕,自动转到下一条语句。
如图:
示例:
int a = 11; //第一步
int b = 2; //第二步
int c = a+b; //第三步
System.out.println(“a+b的结果为:”+c); //第四步
分支结构
- 分支结构又称为选择结构。当程序执行到控制分支语句时,首先判断条件,根据条件表达式的值选择相应的语句执行(放弃另一部分语句的执行)。
- 分支结构包括单分支、双分支和多分支三种形式。
如图:
单分支
【语法格式】
if(布尔表达式){语句块;}
说明:当语句块为一条语句时,大括号可以省略。只有布尔表达式为true时,才进入if语句中。
【示例】
int age = 20;
if(age >= 18){
System.out.println("成年人");
}
双分支
【语法格式】
if(布尔表达式){
语句块;//if分支
}else{
语句块;//else分支
}
【示例】
int age = 20;
if(age >= 18){
System.out.println("成年人");
}else{
System.out.println("未成年人");
}
多分支—1
【语法格式】
if(布尔表达式){
语句块;
}else if(布尔表达式){
语句块;
}else{
语句块;
}
【示例】
int age = 20;
if(age >0 && age <=18){
System.out.println("未成年");
}else if(age > 18 && age <=40) {
System.out.println("青年");
}else if(age > 40&& age<=50) {
System.out.println("中年");
}else if(age > 50) {
System.out.println("老年");
}else{
System.out.println("见鬼了");
}
多分支—2
【语法格式】
switch (表达式) {
case 值1:
语句;
break;
case 值2:
语句;
break;
default:
语句;
break;
}
说明:
- 表达式的值只能为:char、byte、short、int类型、String、enum类型,其它类型均非法
- break语句可以省略,但会出现switch穿透
- default语句也可以省略,一般不建议省略,并且放置在最后
【示例】
public static void main(String[] args) {
String type = "dog";
switch(type) {
case "cat":
System.out.println("喵");
break;//注意break
case "dog":
System.out.println("旺");
break;
case "sheep":
System.out.println("咩");
break;
default:
System.out.println("哇!");
}
System.out.println("switch执行结束!");
}
循环结构
- 当程序执行到循环控制语句时,根据循环判定条件对一组语句重复执行多次。
- 循环结构的三个要素:循环变量、循环体和循环终止条件。
- while、do…while、for三种循环。
如图:
1. while语句
【语法格式】
while(布尔表达式){
循环体; //一条或多条语句
}
【示例】
int i = 1;
while(i<=5) {
System.out.println(i);
i++;
}
2. do…while语句
【语法格式】
do {
循环体;
}while(条件判断表达式);
【示例】
int i = 1;
do{
System.out.println(i);
i++;
}while(i<=0); //注意分号
3. for语句
【语法格式】
for(表达式1;表达式2;表达式3) {
循环体; //一条或多条语句
}
【示例】
for (int i=1; i<=5; i++) {
System.out.println(i);
}
4. break语句
强制退出某个循环体,结束循环语句的执行
【示例】
public static void main(String[] args) {
for(int i=1; i<=10; i++) {
System.out.println(i);
if(i == 5){
break; //会跳出当前循环
}
}
//break跳到这里
}
5. continue语句
终止某次循环过程,跳过continue语下方未执行的代码,开始下一步循环过程
【示例】
public static void main(String[] args) {
for (int i=1; i<=10; i++) {
if (i == 5) {
continue; //会跳该次循环,跳到i++代码处
}
System.out.println(i);
}
}
6. 流程控制语句总结
Java语言的程序控制语句:
条件判断语句:if语句、switch语句。
循环执行语句:do while语句、while语句、for语句。
跳转语句:break语句、continue语句、return语句。
如图:
控制语句类型 | 关键字 | 作用 |
---|---|---|
选择结构语句 | if、if else、else if switch | 通过开关机制,选择要执行的代码 |
循环结构语句 | for、while、do while | 通过循序机制,反复执行相同的代码段 |
改变语句执行序 | break、continue | 通过打断或继续机制,改变当前工码的执行顺序 |
三种循环结构的异同点:
* 用while和do…while循环时,循环变量在循环体之前初始化,而for循环一般在语句1进行初始化。
* while 循环和for循环都是先判断表达式,后执行循环体;而do…while循环是先执行循环体后判断表达式。也就是说do…while的循环体最少被执行一次,而while循环和for就可能一次都不执行。
* 这三种循环都可以用break语句跳出循环,用continue语句结束本次循环。
初识方法
释义
方法是组合在一起来执行操作语句的集合。
【方法作用】
- 使程序变得更简短更清晰
- 有利于程序维护
- 提高程序开发效率
- 提高代码重用性
方法创建与使用
【语法格式】
访问修饰符 返回值类型 方法名(参数列表){
方法体
}
【方法分类】
根据方法是否带参、是否带返回值,可将方法分为四类
1.无参无返回值方法
2.无参带返回值方法
3.带参无返回值方法
4.带参带返回值方法
无参无返回值方法
public void print(){
System.out.println("大家好,我是我是papi酱");
System.out.println("一个集美貌和才华与一身的女子");
}
无参带返回值方法
public int callForYou(){
System.out.println("老铁,双击666!");
return 666;
}
带参无返回值方法
public void printResult(int a, int b){
int c = a + b;
System.out.println("我只是打印结果而已,两数相加结果:"+c);
}
带参带返回值方法
public String ifAdult(int age){
if(age >= 18){
return "成年人";
}else{
return "未成年人";
}
}
递归方法
释义
程序自身调用自身的编程技巧称为递归递归四个特性
1.必须有可最终达到的终止条件,否则程序将陷入无穷循环;
2.子问题在规模上比原问题小,或更接近终止条件;
3.子问题可通过再次递归调用求解或因满足终止条件而直接求解;
4.子问题的解应能组合为整个问题的解。
技巧
找到递归实现的递归部分和终止部分
斐波那契数列
Fibonacci: 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 ... ...
终止部分:F1=1,F2=1;
递归部分为:F(n)=F(n-1)+F(n-2),其中n>2图解斐波那契递归过程
![]()
【求】:Fibonacci第n个数的值,其中n>2
【扩展】:使用循环应该怎么实现?