根据需求定义方法:
入参:做这件事需要的未知条件;
出参:做完事后需要进行的反馈;
方法唯一性:方法名和参数;
方法重载(overload):方法名相同,参数列表不同;(方便记忆,代码更好看);
列表不同分为个数不同和类型不同;
Java Runtime Date Area:java运行时区域,JVM内存;
程序计数器:程序执行时的当前位置指示器;
静态区/方法区:保存程序文件(class文件)以及静态数据,方法被调用之前也保存在静态区,内部还有运行时常量池.
VM栈:栈内存:以栈数据结构为模型开辟的空间,先进后出;
栈:一种数据结构,先进后出;
栈空间:就是栈内存;
栈帧:栈内存的每个元素;
栈底元素:第一个进去的元素;
栈顶元素:最后一个进去的元素;
栈操作:压栈:往栈空间放元素的过程;
弹栈:把元素弹出去的过程;
栈内存是用来执行方法的,所有方法的执行必须在栈内存执行;
本地方法栈:执行本地方法,操作与VM栈一样;
堆内存:保存对象;
方法调用:就是压栈操作;
方法执行完成:弹栈操作;
加载:静态加载:程序运行开始,把所有文件一次载入内存;
动态加载:程序运行开始只加载核心文件,用到其他文件再去加载;JAVA为动态加载;
递归:方法中调用当前方法;
递归思想:和迭代是等价的,就是循环,基本思想就是以此类推;
应用场景:循环能做的,递归都能做,优先使用循环,递归耗内存,运行效率低,树状结构之类的只能用递归,循环做不了;
常见问题应用:所有树状结构,文件夹复制,斐波那契数列;
注意:必须有终止条件,否则会一直压栈不会弹栈,出现栈溢出问题;
斐波那契数列:前面两位数是1,后面每一位等于前两位之和;



