目录
一、方法的概念
方法:封装了一些为了解决某个问题而编写的代码片段称之为一个方法。可以反复使用
二、方法的组成部分
public static void main(String[] args) { }
- public 公共的 方法的访问修饰符
- static 静态的 方法的修饰符
- void 空白的 方法的返回值类型
- main 主要的 方法的名称 方法名需要满足标识符的命名规范
- () 方法的参数列表
- {} 方法体
方法的组成部分: 方法的定义 方法体
三、方法的定义
3.1无参无返回值
public static void 方法名(){}
案例:定义一个方法,实现关门
代码展示:
public static void closeDoor() {
System.out.println("关门");
}
3.2有参无返回值
public static void 方法名(数据类型 参数名,数据类型 参数名,...){}
案例:定义一个方法,打印三角形,(三角形行数有调用者来确定)
代码展示:
//参数的格式:数据类型 参数名 (方法的形式参数)简称形参
public static void printSjx(int num){
for (int i = 1; i <=num ; i++) {
for (int j = 1; j <=i; j++) {
System.out.print("*");
}
System.out.println();
}
}
3.3无参有返回值
public static 数据类型 方法名(){}
案例:定义一个方法,求100质数的个数
代码展示:
//质数:只能被1和本身整除的数字就是质数
//如果一个数能被2到这个数-1之间的数字整除那么这个数就不是质数
public static int count(){
//定义一个变量来进行计数
int count=0;
for (int num = 2; num <=100 ; num++) {
//定义一个信号量表示是否是质数,true表示是质数
boolean flag=true;
for (int j = 2; j <num ; j++) {
if(num%j==0){
//这个数不是质数
flag=false;
break;
}
}
if (flag == true){
count++;
System.out.println("质数"+num);
}
}
return count;
}
3.4有参有返回值
public static 数据类型 方法名(数据类型 参数名,...){}
案例:定义一个方法,求1-n的阶乘
代码展示:
public static long jc(int n) {
long jc = 1;
for (int i = 1; i <= n; i++) {
jc = jc * i;
}
return jc;
}
四、方法的调用
4.1调用无参无返回值
方法名();
//调用方法
closeDoor();
4.2调用有参无返回值
方法名(实参);
//调用方法
printSJ(10);
4.3调用无参有返回值
返回值类型 变量名 = 方法名();
System.out.println(方法名());
//调用方法
int sum = sum();
System.out.println(sum);
4.4调用有参有返回值
返回值类型 变量名 = 方法名(实参);
System.out.println(方法名(实参))
//方法调用
long jc = jc(10);
System.out.println(jc);
五、注意
1、在java中,方法不允许嵌套(方法不能定义在另一个方法中,方法要定义在类的里面,其他方法的外面)
2、一个方法定义了没有调用,他是不会执行的
3、调用有参数的方法时,我们要保证形参和实参一致(个数一致,顺序一致,类型一致)
4、如果一个方法有返回值,那么这个方法必须要有return 值;而且值的类型必须要与定义的返回值的类型保持一致(允许自动转换);没有返回值的方法可以写return(表示结束方法),有返回值的方法必须要写return 返回值
5、如果一个方法有返回值,可以不接收方法的返回值,也可以正常的调用方法
6、如果一个方法有返回值,那么在方法内部的每一个分支下都需要有返回值
六、方法的递归
6.1递归
解决具有既定规律的问题时,在方法内部再次调用自身方法的一种编程方式。
递归的两个过程
递进:大问题简化成小问题
回溯:一步一步的给出结果
6.2递归应用
案例1:求某个数的阶乘
代码展示:
//案例1:求某个数的阶乘
public static int jc(int num){
if(num==1){
return 1;
}
return num*jc(num-1);
}
案例2:求斐波那契数列第n项
代码展示:
//案例2:求斐波那契数列第n项
public static int fbnq(int n){
if(n==1||n==2){
return 1;
}
return fbnq(n-1)+fbnq(n-2);
}