一、循环嵌套

for(条件初始化;条件判断;条件变化){

//代码

for(条件初始化;条件判断;条件变化){

//代码

}

//代码

}

1、循环嵌套例子:

/*输入5行5列的正方形
*****
*****
*****
*****
*****
*/

方法1:

public class Demo02 {
public static void main(String[] args) {
int count=0; //计数器
for(int i=1;i<=25;i++){
System.out.print("*");
count++;
if(count==5){
System.out.println(); //换行
count=0; //计数器归零
}
}

方法2:

for(int i=1;i<=5;i++){
//内层循环控制列
for(int j=1;j<=5;j++){
System.out.print("* ");
}
//换行
System.out.println();
}
//空芯正方形
for(int i=1;i<=4;i++){
//内层循环控制列
for(int j=1;j<=7;j++){
if(i==1 || i==4 || j==1 || j==7){
System.out.print("* ");
}else{
System.out.print(" ");
}
}
//换行
System.out.println();
}
}
}

二、方法

1、方法:

实现具体功能的代码段

使用方法好处: 提高代码的复用性

注意:

1.方法要定义在类中方法外,方法不能嵌套

2.不调用不执行

语法:

有返回值类型的方法

修饰符 返回值类型 方法名([参数列表]){

具有某些功能的代码块;

return 返回值;

}

修饰符:访问权限修饰符,public static默认,具体等到面向对象再说

返回值类型:方法运行后的结果的数据类型-->返回值类型的方法就是要得到这个返回值

引用数据类型|基本数据类型(四类八种)

方法名:方法的名字 ,根据方法名字调用方法

标识符->遵循规则和规范

()->参数列表:方法执行过程当中,是否存在未知的变量,如果有定义再参数列表中

参数列表可以定义,可以不定义

参数可以存在0个,可以存在多个

数据类型 参数名1,数据类型 参数名2,...

return:

1)提前结束方法

2)带出返回值

一个又返回至类型的方法必须存在return,return后面必须有返回值

没有返回值类型的方法

修饰符 void 方法名([参数列表])){

方法体语句;

[return;]

}

void : 没有返回值

return : 提前结束方法

有返回至类型的方法的调用: --执行方法中的代码

1.直接调用: 方法名();---没有使用到返回值

2.赋值调用: 返回值类型 变量名= 方法名();

3.输出调用: System.out.println(方法名());

没有返回值的方法:直接调用,不能赋值调用不能输出调用

参数:

形式参数:形参 :方法定义的时候()中的参数

实际参数:实参 :方法调用的时候()中的参数

形参和实参要一一对应

个数,顺序,数据类型要统一

2、return :

有返回值类型的方法中: 1)结束方法 2)带出返回值

没有返回值类型的方法中: 1)结束方法

出现不可达语句的几种的情况:

1.如果再一定会执行的return后面出现的语句

2.break后面

3.continue

4.死循环后面

5.while(false){...}

兼容类型:

1.参数: 形参>=实参的数据类型

2.return后面数据的类型<=方法的返回值类型<=接收返回值的变量类型

3、方法的重载

定义:在同一个类中,有多个方法,相同的方法名,不同的参数列表(方法签名不同: 方法名+参数列表 ->方法的唯一标识)

满足方法重载的几个条件:

1.同一个类

2.多个方法,方法名相同

3.参数列表不同

参数的个数不同

参数的数据类型不同

参数顺序不同,前提是数据类型不同

如何决定调用重载方法中的哪个方法?

由实参决定

方法的重载和方法的修饰符无关

方法的重载和方法有没有返回值类型无关

方法的重载和方法返回值类型无关

方法的重载和方法参数名无关

方法的重载是一个类中多态的一种体现

方法是一个类中封装的一种体现

4、递归

递归:

自己调用自己

临界条件: 让递归停下来的条件

递归前进段: 到临界条件之前一直自己调用自己

递归后退段: 到达临界条件之后,把结果返回给上一层