一、方法
1.什么是方法,有什么用
方法是可以完成某个特定功能并且可以被重复利用的代码片段,并且一定是自上而下依次执行
2.为什么方法中的变量在运行后一定要释放
因为在一个程序中,方法的调用可能不止一次,并且因为在同一个内存空间当中,变量名不能重名,如果不释放会出现变量名冲突
在方法中的变量是局部变量,局部变量有个特点:在方法结束后,局部变量占用的内存会自动释放
3.方法怎么定义以及语法
定义方式:修饰符列表 返回值类型 方法名(形式参数列表){
方法体;(方法体由java语句构成)
}
3.1.修饰符列表
修饰符列表不是必须的
3.2.返回值类型
(1)返回值类型可以是任何类型,只要是java中的合法的数据类型
(2)返回值就是方法执行结束的执行结果,通常是一个数据,只要是数据就要有类型
(3)当一个方法执行结束,不返回任何值的时候,返回值类型也只能写void,不能不写
(4)如果返回值类型不是void,那么在方法体执行结束后必须使用“return 值;” 如果不用编译器会报错
(5)只要一个方法出现return,return执行完当前方法必定结束,并且return下面不能编写代码
(6)如果返回值类型是void,那么方法体执行结束之后不能有“return 值;”但是可以有return
3.3.方法名
方法名要见名知意
方法名要求首字母小写,后面每个单词首字母大写
3.4.形式参数列表
形式参数列表中的每个参数都是局部变量,方法结束之后内存释放
3.5.方法体
由Java语句构成,方法体中编写的是业务逻辑代码,完成某个特定功能
4.方法定义之后的调用
4.1 语法:类名.方法名(实际参数列表)
4.2 方法必须先调用才能执行
4.3 实参和形参的类型,个数都要必须一一对应
4.4.1 当一个方法没有返回值的时候,不能接收
4.4.2 当一个方法有返回值的时候,可以不接收
4.5调用程序不一定要写在main方法中,main也是一个普通方法;main方法最先执行,最后结束
二、方法重载(overload)
1.优点:
(1)能使代码整齐美观
(2)功能相似的,可以让方法名相同,更易于以后的代码编写
2.什么时候需要考虑方法重载
在同一个类中,如果两个或者多个它们的功能是相似的,那么就可以考虑把它们方法名定义相同,这样代码美观而且便于后期的代码编写
注意:方法重载不能随便使用
3.什么时候代码会发生方法重载
(1)在同一个类中
(2)方法名相同
(3)参数列表不同
注意:方法重载与方法的返回值类型无关
方法重载与方法的修饰符列表无关
println也是一个方法名,并且也重载了
三、方法递归
1.什么是方法递归
(1)方法自己调用自己就是递归
(2)当递归时,程序没有结束条件,一定会发生:栈内存溢出错误:StackOverflowError
所以递归必须要有结束条件
(3)就算递归有结束条件,但是也有可能因为递归的太深了导致栈内存溢出
(4)所以在实际开发中,不建议轻易选择递归,如果能用循环的话用尽量循环(但是在极少数情况下,不用递归无法实现)
假设如果有一天真碰到了StackOverflowError
第一步:检查递归的结束条件,如果不对,要修改到正确为止
第二步:如果递归的结束条件没问题,手动调整JVM的栈内存初始化大小,调大
第三步:调整了大小还是出现错误,那就继续扩大栈的内存大小