方法的重载和递归

举报
@小红花 发表于 2022/02/23 11:21:35 2022/02/23
1k+ 0 0
【摘要】 方法重载机制:三个方法功能不同,但是相似,分别齐了三个不同的名字,有什么缺点呢?缺点有两个:第一个:代码不美观第二个:程序员需要记忆更多的方法名称,程序员比较累。使用方法重载机制之后:代码整齐美观功能相似的,可以让方法名相同,更易于以后的代码编写。 在java语言中,是怎么进行方法区分的呢?首先java编译器会通过方法名进行区分。但是在java语言中允许方法名相同的情况下出现。如果方法名相同...

方法重载机制:

三个方法功能不同,但是相似,分别齐了三个不同的名字,有什么缺点呢?

缺点有两个:

第一个:代码不美观

第二个:程序员需要记忆更多的方法名称,程序员比较累。

使用方法重载机制之后:

代码整齐美观

功能相似的,可以让方法名相同,更易于以后的代码编写。

java语言中,是怎么进行方法区分的呢?

首先java编译器会通过方法名进行区分。

但是在java语言中允许方法名相同的情况下出现。

如果方法名相同的情况下,编译器胡通过方法的参数类型进行方法的区分。

方法重载(overload):

什么时候需要考虑使用方法重载?

在同一个类当中,如果功能1和功能2他们的功能是相似的,

那么可以考虑将他们的方法名一致,这样的代码既美观,又便于后期的代码编写

(容易记忆,方便实用)。

注意:方法重载overload不能随便使用,如果两个功能压根不相干,不相似,根本没关系,此时两个方法使用重载机制的话,会导致编码更麻烦,无法进行方法功能的区分。

  • 什么时候代码会发生方法重载?
    • 条件1:在同一个类当中
    • 条件2:方法名相同
    • 条件3:参数列表不同
      • 参数的个数不同算不同
      • 参数的类型不同算不同
      • 参数的顺序不同算不同

只要同时满足以上3个条件,那么我们可以认定方法和方法之间发生了重载机制。

注意:不管代码怎么写,最终一定能让java编译器很好的区分开这两个方法。

方法重载跟返回值无关,主要看的是方法名和形参类型。

方法重载跟修饰符列表无关。

代码的封装:

在同一个类中,调用方法时,类名可以省略

调用别的类中的方法时,类名不能省略

方法的递归:

1.什么是方法递归?

方法自己调用自己,就是方法递归

2.当递归是程序没有结合素条件,一定会发生:

栈内部溢出错误:stackOverFlowError

所以:递归必须要有结束条件(这是一个非常重要的知识点)。

JVM发生错误之后只有一个结果,就是退出JVM

3.递归假设是有结束条件的,就一定不会发生栈内存溢出错误吗?

假设这个结束条件是对的,是合法的,递归有的时候也会出现栈内存溢出错误

因为有可能递归的太深了,栈内存不够了,因为一直在压栈。

4.在实际的开发中,不建议轻易的选择递归。

能用for循环while循环代替的,尽量使用循环来做,因为循环的效率高,耗费的内存少,递归耗费的内存比较大,另外递归的使用不当,会导致JVM死掉(但在极少数的情况下,不用递归,这个程序没法实现)。所以,递归我们还是要认真学习的。

5.在实际的开发中,假设有一天你真正的遇到了:stackOverFlowError

该怎么解决呢?

首先第一步:

先检查递归的结束条件对不对,如果递归结束条件不对,

必须对条件进一步修改,直到正确为止。

第二步:

假设递归条件没问题,怎么办?

这个时候需要手动的调整JVM的栈内存初始化大小。

可以将栈内存的空间调大点,(可以调整大一些)。

第三步:

调整了大小,如果运行时还是出现这个错误,

没办法,只能继续扩大栈内存的大小。

java -X)这个可以查看调整堆栈大小的参数

我们要一味地将变量缩减吗?代码缩减吗?这样好吗?

太计较变量的数量会有什么后果呢?(运行效率不会低)

1.代码的可读性差

2.可读性差也可以会牵连到代码的开发效率

其实计算机内存不差这点东西

注意:在编码过程中,有一些变量名是必须要定义的,

因为在后面代码中还需要访问这个数据,重复的访问这个数据

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。