方法重载
-
定义: 在同一个类中,某方法允许存在一个以上的同名方法,只要它们的参数列表不同即可。
作用: 屏蔽了同一功能的方法由于参数不同所造成方法名称不同。
-
判断原则: 两同一不同
- 两同: 同类中, 方法名相同
- 一不同: 方法参数列表不同(参数类型, 参数个数, 参数顺序)
- 只要参数类型, 参数个数, 参数顺序有一个不同, 参数列表就不同
-
注意
- 方法重载与方法的返回值类型无关,只是一般要求返回值类型一致
- 参数列表与参数的名称没关系, 即为方法的重载与形参没关系
JVM内存模型
-
JVM内存
- 本地方法栈:为虚拟机使用的native方法服务
- 程序计数器:当前线程所执行的字节码的行号指示器
- Java堆:被所有线程共享的一块内存区域,在虚拟机启动时创建。所有的对象实例以及数组都要在堆上分配(使用new关键字, 就表示在堆中开辟一块新的存储空间 )
- Java虚拟机栈:描述Java方法执行的内存模型,每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口 等信息
- 每一个方法,创建一个栈帧, 栈帧存放了当前方法的数据信息(局部变量),当方法调用完毕, 该方法的栈帧就被销毁了
-
方法区:线程共享的内存区域,存储已被虚拟机加载的类信息、常量、静态变量即时编译器编译后的代码数据等(这个区域的内存回收目标主要是针对常量池的回收和对类型的卸载)
-
GC垃圾回收器
- 不需要手动去控制内存的释放。当JVM内存资源紧张时,就会自动地去清理无用对象(没有被引用到的对象)所占用的内存空间
- 自动回收的是堆空间的内存, 而栈空间内存会随着该方法的执行结束, 自动释放该方法的栈帧内存
数组
- 定义: 有序排列的同类型数据的集合
- 数组元素: 数组中每一个数据
- 数组索引: 数组元素存放的位置,索引从0开始,步长是1
- 数组定义格式
- 变量的定义:
数据类型 变量名; 如: int age;
- 方式一:
数组元素的类型[] 数组名; int[] ages; // (推荐)
- int[]看成是一种数据类型, int类型的数组类型
- 方式二:
数组元素的类型 数组名[]; int ages[];
- 变量的定义:
- 注意
- 变量, 数组必须先初始化(赋值), 才能使用, 因为初始化表示在内存中分配空间
int age; System.out.println(age); // 报尚未初始化