声明格式
[修饰符] 返回值类型 方法名(形式参数列表){
多条java语句;
}
方法运行过程(栈帧)
- 每个方法均会在栈空间内开辟一块存储空间,名为栈帧(stack frame)
- 栈帧用以存储传入的参数的值以及内部变量的值
- 方法执行返回语句后,该方法的栈帧从栈中出栈
方法重载
定义
方法的重载(overload)是指在一个类中可以定义多个方法名相同,但参数不同的方法,调用时会根据不同的参数自动匹配对应的方法。
构成方法重载的条件
- 不同的含义:形参类型、形参个数、形参顺序不同
- 只有返回值不同不构成方法的重载,如 int a(String str){} 与 void a(String str){}
只有形参的名称不同,不构成方法的重载,如 int a(String str){} 与 int a(String s){}
public class TestOverload{
public static void main(String[] args){
add(100,200);
add(100.25,200);
dd(100,200.25);
add(100,200,300);
}
/**求和的方法**/
public static int add(int n1, int n2){
int sum = n1 + n2;
return sum;
}
//方法名相同,参数类型不同,构成重载
public static double add(double n1, int n2){
double sum = n1 + n2;
return sum;
}
//方法名相同,参数顺序不同,构成重载
public static double add(int n1, double n2){
double sum = n1 + n2;
return sum;
}
//方法名相同,参数个数不同,构成重载
public static double add(int n1, int n2, int n3){
int sum = n1 + n2 + n3;
int sum;
}
/*编译错误,只有返回值不同,不构成重载
public static void add(int n1, double n2){
double sum = n1 + n2;
}
*/
/*编译错误,只有形参名称不同,不构成重载
public static double add(int m1, double m2){
double sum = n1 + n2;
return sum;
}
*/
}
注意点
重载的方法,实际是完全不同的方法,只是名称相同而已