方法重载
首先看以下代码并分析缺点
不使用方法重载机制时
package chapter2;
/*
当前代码先不使用方法重载,分析一下这样代码的缺点
缺点一 : 代码不美观
缺点二 : 不方便调用,程序员需要记忆更多的方法名
*/
public class overLoad01 {
public static void main(String[] args) {
sumInt(10, 20);
sumDouble(3.0, 2.0);
sumLong(10L, 20L);
}
public static void sumLong(long a, long b){
long c = a + b;
System.out.println(a + " + " + b + " = " + c);
}
public static void sumDouble(double a, double b){
double c = a + b;
System.out.println(a + " + " + b + " = " + c);
}
public static void sumInt(int a, int b){
int c = a + b;
System.out.println(a + " + " + b + " = " + c);
}
}
使用方法重载机制时
package chapter2;
/*
使用java语言中的方法重载机制。并分析程序的优点
在java语言中允许在一个类中定义多个方法,这些方法的名字可以一致
优点:
1. 代码美观
2.方便调用,程序员需要记忆的方法多了
*/
public class overLoad02 {
public static void main(String[] args) {
sum(10, 20);
sum(3.0, 2.0);
sum(10L, 20L);
}
public static void sum(long a, long b){
long c = a + b;
System.out.println(a + " + " + b + " = " + c);
}
public static void sum(double a, double b){
double c = a + b;
System.out.println(a + " + " + b + " = " + c);
}
public static void sum(int a, int b){
int c = a + b;
System.out.println(a + " + " + b + " = " + c);
}
}
重载的条件
当一个程序满足怎样的条件时,代码就构成了方法重载呢?
条件:
1. 在同一个类中
2. 方法名一致
3. 形参列表不同:
1. 类型不同算不同
2. 顺序不同算不同
3. 个数不同算不同
方法重载机制时编译阶段的机制,在编译阶段就已经完成了方法的绑定
什么时候使用方法重载呢?
在以后的开发中,在一个类中,如果两个方法功能相似,建议将方法定义为同一个名字。
从而减轻开发压力
方法的递归
- Q:什么是方法的递归调用 A:方法自己调用自己
- 递归如果没有结束条件的话,会出现栈内存溢出的错误: StackOverFlowError
- 所有的递归调用必须有结束条件
- 在实际开发中,使用递归调用时,即使有时候结束条件是存在的,而且结束条件也是合法的但仍然会发生栈内存溢出的情况。这可能是因为栈递归太深,栈内存不够了导致。
- 递归谨慎使用,能用循环用循环,循环不涉及压栈等消耗内存的处理
package chapter2;
public class recursion {
public static void main(String[] args) {
recursion();
}
public static void recursion() {
System.out.println("recurson begin");
//方法的递归调用
recursion();
System.out.println("recursion begin");
}
}
由于没有执行return语句,一直压进栈中,即使内存再大,也会有爆内存的一天