重载 overload:
方法唯一性:方法名,参数类型
参数类型不同:个数不同,类型不同。
相同功能记住一个名字 名字相同。参数不同可以自动重载
递归:
内存
* Java Runtime Data Area : java运行时区域. -般叫JVM内存
*
* 程序计数器: -块较小的内存区域作用可以看做是当前程序执行的位置指示器
*
* 静态区/方法区: 保存程序文件(class文件)以及静态数据,方法被调用之前,也保存在静态区,内部还有运行时常量池
*
* VM栈:又叫栈内存 栈内存是以栈数据结构为模型开辟的一段空间,特性是先进后出
*
* 栈:是一种数据结构,先进后出,像弹夹
*
* 栈的构成因素
*
* 栈空间:栈内存就是栈空间
*
* 栈帧:栈空间中的每一个栈元素 就叫栈帧(比如弹夹中的每一个子弹 就叫栈帧)
*
* 栈底元素:第一个放进去的栈帧
*
* 栈顶元素: 最后-一个放进去的栈帧
*
* 栈操作 压栈:就是指把元素放入栈空间的过程 弹栈:就是把元素弹出去的过程
*
* 栈内存:是用来执行方法的,所有方法的执行,必须在栈内存进行
*
* 本地方法栈: 用来执行一些本地方法,比如hashCode等,模型和操作都和VM栈一致,不用管。
*
* 堆内存: 用来保存对象
*
* 运行机制
*
* 1 java 程序编写 2 javac编译,得到class文件 3 java命令 运行
* 3.1开启jvm,把运行的程序载入内存,把class文件保存到静态区 3.2 加载完之后,JVM自动调用程序中的main方法
* 3.3在栈内存开辟栈帧,用来执行main方法 如果 main方法中,没有其他方法调用,则运行完 弹栈 销毁 结束 JVM关闭
*
* 如果main方法中,有其他方法调用,则在main方法之上再开辟一个栈帧,用来执行新的方法,以此类推
* 但是如果调用的方法是别的类中的方法,则需要把对应的类先加载进来
*
* 方法调用 : 就等于是压栈操作 方法执行完成 : 就等于是弹栈操作
*
* 加载 静态加载 : 指程序开始运行,就把相关的所有文件全部一次性载入内存 动态加载 :
* 程序运行开始,只载入核心文件,当用到其他文件的时候,再去加载 java中采用动态加载机制
斐波那契数列示例: