大白成为Java软件攻城狮的第十五天(Java方法重载机制overload、方法递归)

方法重载(overload)

  • 功能虽然不同,但是“功能相似”的时候,方法重载机制可以让相似的方法就像在用一个方法一样。【Java支持这种机制而有些语言则不支持,例如JavaScript】
  • 功能相似的时候,方法名可以相同。

1、什么时候考虑使用方法重载?

  • 功能相似的时候,尽可能让方法名相同【但是功能不同/不相似的时候,尽可能让方法名不同】

2、什么条件满足之后构成了方法重载

  • 在同一个类当中
  • 方法名相同
  • 参数列表不同:
    1、数量不同:public static void m1(){} 与 public static void m1(int a){}
    2、顺序不同: public static void m2(int a,double b){} 与 public static void m2(double a,int b){}
    3、类型不同:public static void m3(int x){} 与 public static void m3(double x){}
	方法重复,编译错误。
	public static void m4(int a,int b){
    
    }
    public static void m4(int b,int a){
    
    }

3、方法重载和什么有关系,和什么没有关系

  • 方法重载和方法名+参数列表有关系
  • 方法重载和返回值类型无关
  • 方法重载和修饰符列表无关

方法递归

  • 什么是递归?
    即:方法自身调用自身。
	a(){
    
    
		a();
	}
  • 递归是很耗栈内存的,递归算法可以不用的时候尽量别用。
  • 以下程序运行的时候发生这样的一个错误【不是异常,是错误error】:
    java.lang.StackOverflowError
    栈内存溢出错误
    错误发生无法晚挽回,只有一个结果。就是JVM停止工作。
  • 递归必须有结束条件,没有结束条件一定会发生栈内存溢出错误。
  • 递归即使有了结束条件,即便结束条件是正确的,也可能会发生栈内存溢出错误,因为递归太深了。

注意:

  • 递归可以不使用尽量别用。
  • 但是有些情况下该功能的实现必须依靠递归方式。

例子

递归计算前n个数的和:
public class RecursionTest01{
    
    
	publci static void main(String[] args){
    
    
		int n=4;
		int reValue=sum(n);
		System.out.println(reValue);
	}
	
	public static int sum(int n){
    
    
		if(n==1){
    
    
			return 1;
		}
		return n+sum(n-1);	
	}
}
递归计算n的阶乘:
public class RecursionTest02{
    
    
	publci static void main(String[] args){
    
    
		int n=5;
		int reValue=method(n);
		System.out.println(reValue);
	}
	public static int method(int n){
    
    
		if(n==1){
    
    
			return 1;
		}
		return n*method(n-1);
	}
}

猜你喜欢

转载自blog.csdn.net/qq2632246528/article/details/112849157
今日推荐