1.方法的作用:减少重复性代码,实现代码复用;便于后期维护性。
2.方法:实现特定功能的一段独立代码块。
3.方法声明:
3.1:方法声明的语法:
访问修饰符 【扩展修饰符static/final/abstract】 返回值类型 方法名(参数类型1 参数名1,参数类型2 参数名2…){
代码块;
【return 返回值;】
}
3.2:方法的访问修饰符有public,protected,default,private,一般用public
3.3:返回值类型:是指方法执行完后返回的一个结构的类型,返回值类型可以是Java中任意类 型(int,double,String,boolean,数组,类,接口),如果方法执行完不想 返回任意东西,用void.
3.4:方法名采用是驼峰式命名法。
3.5:方法参数:执行这个方法功能所需要的数据。在方法中,参数当作已知的变量来使用。
一个方法的参数可以是0个到多个,参数之间用逗号分隔。
3.6:返回值:方法执行完后返回的结果,一个方法只能返回一个结果。如果这个方法是无返回 值的方法,可以省略【return 返回值;】,如果方法是有返回值的,那么 return后面的返回值的数据类型必须与返回值类型类型相同。
3.7:方法不调用不执行;方法只有调用了才会去执行。
3.8:方法与方法之间是平级关系,方法与方法之间不可以嵌套。
eg:/**
* 声明一个无返回值无参数的方法
* 刷新功能
*/
public static void frush(){
System.out.println("刷新");
}
/**
* 声明一个无返回值有参数的方法
* 输出姓名功能
*/
public static void printName(String name){//name="孙星"
System.out.println("姓名为:"+name);
}
/**
* 声明一个有返回值无参数的方法
* 返回一句话的功能
*/
public static String getWord(){
return "我是天才";
}
/**
*声明一个有返回值有参数和方法
* 计算两个数之和的功能
*/
public static double add(double num1,double num2){
double sum=num1+num2;
return sum;
}
4.方法的调用:
4.1:调用方法的语法: 方法名(【参数1,参数2…】);
eg://调用无返回值无参数的方法
frush();
//调用无返回值有参数的方法
printName("孙星");
//调用有返回值无参数的方法,声明一个变量接收方法执行完的返回值
String result=getWord();
System.out.println("方法的执行结果为:"+result);
//有返回值有参数和方法,声明一个变量接收方法的执行结果
double result2=add(3.14,6.18);
System.out.println("两数之和为:"+result2);
double result3=add(1,1);
System.out.println("两数之和为:"+result3);
5.方法的参数:
形参:方法声明时的参数叫形参,形参前一定要有数据类型。eg:(参数类型1 参数名1,参数 类型2 参数名2…)
实参:方法调用时的参数叫实参,实参要传递具体的数据,无须写数据类型。
eg:printName(“孙星”);
注意:同一个方法的,实参和形参的数量要一致,类型要匹配。
6.方法重载:
6.1:方法重载作用:解决同一个类中相同功能方法命名问题,调用问题。
6.2:方法重载条件:在同一个类,方法名相同,参数列表不同(参数的个数,参数类型不 同)。
6.3:重载方法的调用,是根据方法参数列表来确定调用哪个方法。
eg:public class MethedTest2{
/**
*程序的入口方法
*/
public static void main(String[] args){
//调用计算数之和的方法
double result1=add(1,2,4.4,7);
System.out.println("结果为:"+result1);
}
/**
*计算两数之和的方法
*/
public static double add(double num1,double num2){
System.out.println("计算两数之和的方法");
double sum=num1+num2;
return sum;
}
/**
*计算三数之和的方法
*/
public static double add(double num1,double num2,double num3){
System.out.println("计算三数之和的方法");
double sum=num1+num2+num3;
return sum;
}
/**
*计算四数之和的方法
*/
public static double add(double num1,double num2,double num3,double num4){
System.out.println("计算四数之和的方法");
double sum=num1+num2+num3+num4;
return sum;
}
}
7.递归:方法自身调用自身
7.1:递归的使用条件:
7.1.1:将原问题拆分为若干子问题,子问题的解决方式与原问题一样。
7.1.2:原问题的解决依赖于所有子问题的解决。
7.1.3:递归一定要有出口(终止条件)。
7.2:简单的问题用递归可以解决,也可以用循环结构解决。
复杂的问题用递归解决的,一般不能用循环结构解决。
写递归时一定要避免死递归。死递归会报内存溢出。
7.3:递归的优点:用递归思想解决复杂问题
递归的缺点:耗内存。
eg:public class MethedTest4{
/**
*程序的入口方法
*/
public static void main(String[] args){
//获得具有从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
System.out.println("请输入要计算的阶乘的数:");
int a=input.nextInt();
//调用重载方法
int r=diGui(a);
System.out.println(a+"的阶乘为:"+r);
}
/**
*计算一个数的阶乘
*/
public static int diGui(int num){//5,4,3,2,1
//声明一个变量存当前数的阶乘的结果
int result=0;
//如果当前数是1,阶乘结果就是1
if(num==1){
result=1;
}else{//如果当前数不为1,阶乘:当前数*diGui(当前数-1)
result=num*diGui(num-1);
}
return result;
}
}