CoreJava 循环结构
**循环:**基于某个条件,重复的 有规律的执行某一段代码。
循环语法
- while
while(布尔表达式){
//代码块
}
执行过程:先判断布尔表达式是否是true 是 则执行{}中的代码块,执行后再判断布尔表达式,为true 则继续执行{}中代码块,执行后再判断布尔表达式的值,如果是true结果则继续执行并判断,如果不是true ,为false 就结束循环,继续执行其他语句。
特点:
1. 先判断 再执行
2. 循环体语句会被执行 0 - n 次
3. 通常用于 循环次数明确 的情况
//100以内整数的和
public class sum{
public static void main(String[] arg){
int sum = 0;
int n = 1;
while(n <= 100){
sum += n;
n ++;
}
System.out.println("1 - 100 以内整数的和是 " + sum);
}
}
- do…while
do{
//循环体语句
}while(布尔表达式);
特点:
1. 先执行,再判断
2. 循环体语句会被执行 1 - n 次
3. 通常用于 循环次数不明确 的情况
- for
for(初值; 循环条件; 递增(减)量){
//循环体语句
}
特点:
1. 先判断,再执行
2. 循环体语句会被执行 0 - n 次
3. 通常用于 循环次数明确 的情况
流程控制语句
1. break 退出整个循环
2. continue 退出本次循环,进行下次循环
循环嵌套
概念:在一个有效的循环语句中 又定义了 其他有效的循环语句
for(int i = 0; i <= 5; i ++){//外层循环
for(int j = 0; j <= 10; j ++){//内层循环
System.out.println("i = "+ i + ", j = " + j);
}
}
函数
- 概念:
实现某一特定功能的代码块,可以提取出来,单独定义成函数,以提高代码的复用性,
定义的位置:在类以内 其他函数以外
函数的数量没有限制 - 函数的定义
public static 返回值类型 函数名(参数列表) 抛出的异常{
//功能语句(函数体语句)
}
-
函数的调用
函数必须调用才能执行:通常在其他函数内 进行调用
调用语法: 函数名(参数列表); -
参数
形式参数(形参):
在函数定义时 指定的参数列表。
public static 返回值类型 函数名(数据类型1 变量名,数据类型2 变量名2){
//函数体语句
}
注意:形参变量 相当于 函数的局部变量,可以在函数内部使用
实际参数(实参):
在函数调用时,指定的参数信息(具体的值)。
函数名(值1, 值2);
注意:函数调用时,实参值的列表 和 形参变量的列表 的类型 个数 顺序 必须完全一致。
- 返回值类型
1. 不返回结果 void
public static void 函数名(形参列表){
//实现部分
}
2. 需要返回结果
public static 返回值类型 函数名(形参列表){
//实现部分
}
其中,返回值类型 可以是8中基本类型 或 引用类型
-
返回值语句
只要函数的返回值类型不是void,则在函数内部 必须使用 语法 return 表达式;在函数中指定返回值
注意:
1. >return 表达式的结果类型 必须和 函数的返回值类型一致
2. >一个函数 最多只能有一个返回值
3. >必须保持每个分支中 都有返回语句return 的用法:
1. < return 表达式; //函数执行结束,并且 会带着表达式的结果一起返回到 函数调用的位置
2. < return;// 用在返回值是void的函数中,代表函数执行结束,没有返回值,直接回到函数调用的位置 -
函数的执行过程
- 转到函数定义的位置
- 实参 给 形参变量 依次赋值
- 执行函数体语句
- 遇到return或程序执行结束,如果有返回值,带着返回值一起 回到函数调用的位置 继续往后执行
-
函数的好处
减少了代码的冗余
提高代码的可复用性
提高代码的可维护性
提高可读性
有利于团队的建设 和 协同开发
非结构化编程 --> 结构化编程(函数的出现) --> 面向对象的编程 -
函数的嵌套调用和递归
嵌套调用:在被调用函数中 又调用了其他函数,称为嵌套调用
递归调用:在一个函数的内部 又调用了自身函数,称为递归调用
递归调用时,注意 设置 正确的出口条件,避免无穷递归