1、循环:
使一些代码重复执行多次
for循环
格式:
for(条件初始化;条件判断;条件变化){
重复执行的代码段;
}
条件初始化:声明一个变量并第一次赋值 int i =1;
条件判断:对已经存在条件进行赋值的判断 i<5
决定循环是否结束还是下一次循环
条件变化:变量i自身值的改变
由以上3个条件集体控制循环执行多少次
执行流程:
1:执行条件初始化
2:条件判断:值为Boolean类型的表达式
值为false:循环结构结束
值为true:继续执行本次循环体语句{ }
3:条件变化:i++ i+=10 i*=3;|
重复执行第2,3步骤
//重复执行10次
for(int i = 1;i<=10;i++){
System.out.println("重复执行"+i+"次");//需要重复执行的代码
}
注意:
在重复执行多次代码的时候,如果能够确定循环次数|确定变量变化的区间与规律---->for循环
变量:
局部变量:定义在局部位置(方法|{ })
成员变量:定义类中方法外
作用域:从变量的声明开始,到包裹他的离他最近的}结束(在同一作用域范围内变量不能同名)
for 次数循环:确定循环次数 | 变量的变化范围
while条件循环:不确定循环次数 | 变量的变化情况,根据条件判决循环是否结束 | 执行
可以互相转换,但是可以根据具体应用场景与特点进行选择
语法:
//条件初始化;
while(条件判断){
循环体语句;
条件变化;
}
注意:
while循环之前所定义的条件初始化,作用域不独属于这个while循环
while循环体语句只有一句,前后的{}可以省略
do....while循环:
条件初始化;
do{
//循环体语句;
//条件变化;
}while(条件判断);
tips:无论是否满足条件都至少执行一次
死循环:无法终止的循环
编译器识别死循环:后面的代码为不可达语句,会编译期间报错
代码层面的死循环:一般为程序逻辑方面的错误!
条件判断有误
条件变化漏写
不可达语句:
break后面的语句
continue后面的语句
return后面的代码
死循环后面的代码
while--false
public static void main(String[] args) {
//编译器识别的死循环
boolean b = true;
/*for(;;){
}*/
/*while(true){
}*/
//do{}while(true);
//
int i = 1;
while(i>0){
System.out.println(i);
i++;
}
System.out.println("不可达语句...");
}
2、嵌套循环:
任意相互嵌套
for(条件初始化;条件判断;条件变化){
//代码
for(条件初始化;条件判断;条件变化){
循环体语句;
}
//代码;
}
注意 :外层循环执行一次,内层循环执行一轮
练习打印九九乘法表:
for(int x=1;x<=9;x++){
for(int y=1;y<=x;y++){
System.out.print(y+"*"+x+"="+(x*y)+"\t");
}
System.out.println();
}
3、方法 :
定义:解决事情的办法,即实现功能的代码段
注意 :
1.方法不能嵌套
2.定义在类中方法外(成员)的位置
3.不调用不执行
语法 : 明确方法实现的功能-->需求
返回值 : 分析功能执行完毕之后是否需要得到一个结果,如果需要就定义为有返回值类型的方法,如果不需要就定义为没有返回值类型的方法
没有返回值类型的方法:
修饰符 void 方法名(参数列表){
实现功能的代码段;
}
修饰符 : 访问权限修饰符 ,public static
void : 没有返回值类型的方法标识
方法名 : 标识符,严格遵守标识符的命名负责与规范,调用方法时候需要根据方法名
参数 : 分析方法执行过程中|定义时,是否存在位置的数据|有可能改变的数据|不确定的数据,如果存在,定义在方法的参数列表中
参数列表 : 数据类型 参数名1,数据类型 参数名2....
可以为0个,可以为多个
相当于方法中的局部变量的声明
数据类型 : 为可以任意类型,(基本数据类型|引用数据类型)
{} 中 方法体
有返回值类型的方法:
1、方法调用 : 执行方法中的代码
方法名();
2、参数 :
形式参数(形参) : 定义方法时候()中的参数
实际参数(实参) : 调用方法时候()中的参数
要求一 一对应:个数一致,类型一致,不同类型得到参数顺序一致
参数类型兼容:实参的类型<=形参的类型
返回值类型兼容:接受返回值的>=方法的返回值类型>=return后面的数据类型
3、定义方法前明确的4点 :
需求
方法名
返回值
参数