1、方法是什么? 方法是一段可以完成某个特定功能的并且可以被重复利用的代码片段。 方法的出现,让代码具有了很强的复用性。
2、方法最难实现的是: 根据业务怎么进行方法的抽取。
方法的返回值类型定义为 什么?
方法的名字叫什么?
方法的形式参数列表定义为 什么?
一个方法就是一个独立的功能。
3、方法的定义
[修饰符列表] 返回值类型 方法名(形式参数列表){ 方法体; }
4、JVM的内存结构中三块比较重要的内存空间。
方法区: 存储代码片段,存储xxx.class字节码文件,这个空间是最先有数据的, 类加载器首先将代码加载到这里。
堆内存: 在运行时动态地申请某个大小的内存空间。
栈内存: stack栈当中存储什么? 每个方法执行时所需要的内存空间(局部变量)。
6、关于数据结构中的栈数据结构 原则: 后进先出 先进后出 栈数据结构相关的术语: 栈帧:永远指向栈顶部的元素(栈顶元素具有活跃权。) 栈顶元素 栈底元素 压栈,入栈,进栈,push 弹栈,出栈,pop
7、分析程序运行过程中的内存变化 方法只定义不调用是不会执行的。 方法调用时:压栈 (在栈中给该方法分配空间) 方法执行结束时:弹栈(将该方法占用的空间释放,局部变量的内存也释放。)
8、方法重载overload
8.1、什么情况下我们考虑使用方法重载机制? 当功能相似的时候,建议将方法名定义为一致的. 注意:如果功能不相似,坚决要让方法名不一致。 8.2、代码满足什么条件的时候构成了方法重载? 条件1:在同一个类当中 条件2:方法名相同 条件3:形式参数列表不同(类型、个数、顺序) 注意: 方法重载和返回值类型无关,和修饰符列表无关。
9、方法递归
9.1、需要理解什么是方法递归? 方法自身调用自身。 9.2、使用递归的时候,必须添加结束条件,没有结束条件,会发生栈内存溢出错误。 StackOverflowError 原因:一直压栈,没有弹栈,栈内存不够用。 9.3、能够使用循环代替递归的尽量使用循环,循环的执行耗费内存少一些, 递归耗费内存相对多一些,另外递归使用不当很容易内存溢出,JVM停止工作。 当然,只有极少数情况下,只能用递归,其它代码解决不了问题。