1.方法的优势:实现代码复用,减少了代码重复。方便后期的维护。
2.方法:具备特定功能的一段独立的代码段。一个方法对应一个功能。
方法声明的语法:
访问修饰符 [static/final/abstract] 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2……){
方法体
return 返回值;//作用返回方法执行后的结果,结束方法
}
方法调用的语法:方法名(参数名1,参数名2……);
访问修饰符:public,private,(default),protected.
返回值类型: void+java支持的数据类型
方法名:骆驼式命名法
方法声明时的参数(可以是0个到多个):在方法声明时,这个地方的参数叫形参。形参的参数名前一定写数据类型。
方法调用时的参数:叫实参。实参不需要写数据,只需要传值。实参传递的参数实际上是传给形参。
return 返回值:方法的返回值类型是什么,咱们返回值就只能是这种类型。如果方法返回值类型为void时,就无须用return 返回值。
注:(1)方法不调用不执行,调用才执行。
(2)形参与实参的参数个数相同,形参与实参的参数对应类型要相同,参数的位置也要匹配。
(3)如果方法有返回值,谁调用这个方法,返回值就返回给谁;
有返回值的方法在调用时,如果要用到返回值就要定一个变量接收方法的返回结果;
如果不用返回结果,在方法调用时就不需要接收返回结果。
(4)如果一个方法执行时,需要调用才提供数据才能完成功能,就可以用有参方法;
如果一个方法执行完,需要方法返回结果,就定成有返回值 。
(5)方法与方法是平级关系,不能嵌套定义。
(6)方法间可以相互调用。
eg:
/**
* 声明一个无参无返回值的方法
*/
public static void shuaPin(){
System.out.println("刷屏");
}
/**
* 声明一个有参无返回值的方法
*/
public static void add(int a,int b){
int result=a+b;
System.out.println(result);
}
/**
* 声明一个有参方法,有返回值
*/
public static int chen(int num1,int num2){
int result=num1*num2;
return result;
}
3.方法重载:(1)在同一个类 (2)方法名相同 (3)参数列表不同(参数的个数不同和类型不同)
使用场景:在同一个类,如果执行相同的功能,只是参数不一样,可以用方法重载。
方法重载与方法的访问修饰符和返回值类型无关。
在调用时,虚拟机通过参数列表的不同来区分同名方法。
eg:public static int add(int num1,int num2){
System.out.println("两个数的和");
int result=num1+num2;
return result;
}
public static int add(int num1,int num2,int num3){
System.out.println("三个数的和");
int result=num1+num2+num3;
return result;
}
4.递归:方法自身调用自身。
适用场景:(1)把一个问题拆分成多个子问题。
(2)子问题的解决方式与问题本身的解决方式一样
(3)最终问题的解决依赖每个子问题的解决
(4)最终问题一定要有出口。
eg:计算一个正整数num的阶乘
public static long diGui(int num){//5
if(num==1){
return 1;
}else{
return num*diGui(num-1);//5*diGui(4)->5*4*diGui(3)->5*4*3*diGui(2)->5*4*3*2*1
}
}