方法的重载和递归
【摘要】 方法重载机制:三个方法功能不同,但是相似,分别齐了三个不同的名字,有什么缺点呢?缺点有两个:第一个:代码不美观第二个:程序员需要记忆更多的方法名称,程序员比较累。使用方法重载机制之后:代码整齐美观功能相似的,可以让方法名相同,更易于以后的代码编写。 在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)