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

本文介绍了Java中的方法重载机制,强调了在功能相似时如何通过相同方法名和不同的参数列表来实现多态。同时,讲解了方法重载的条件,指出返回值类型和修饰符列表与方法重载无关。接着,解释了递归的概念,提到递归可能导致的栈内存溢出错误,并给出两个递归计算示例,分别是计算前n个数的和与n的阶乘。最后,提醒开发者在使用递归时要谨慎,避免无限递归导致的问题。
摘要由CSDN通过智能技术生成

方法重载(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);
	}
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值