内存模型的理解
1. 把java内存分成三个区域(堆、栈、方法区
或者简单看成两个区(栈、堆)
2. 局部变量、形参 在栈区
生命周期(空间的有效期)是伴随方法的执行结束而消亡的
3. 方法区
类的信息、方法的代码
4. 堆区
对象(属性)
对象构造
1.当对象没有引用指向它时,这个对象被视为垃圾对象,随后会被垃圾回收站回收
GC(Garbage Collector)
GC做的再好,也是有性能损耗的,注意不要过多产生无用对象
2.调用对象的方法,可以想象成
object.method(); method(object);
调用方法时,想象成会传入一个对象作为饮食的参数
3. 构造对象的过程
A a=new A(…)
1.创建一个引用变量
2.计算对象所需内存的大小,从JVM申请内存(空间),数据未初始化
3.构造方法负责将申请出的内存空间初始化
命名遮挡(Name shadow)
局部变量、形参或者其他,与属性、方法或者其他重名,导致直接通过名字访问出现歧义
关键字this
1. 通过 this 全名称访问属性、方法
2. 通过 this 调用其他构造方法
但 this 调用,必须出现构造方法第一行
3. this 代表的就是这个对象本身
static 关键字的用法
1. 修饰属性
2. 修饰方法
3. 修饰内部类
4. 静态代码块
5. import static 包
最核心一点,static 和对象解绑
静态属性
1. 存放在类(方法区)
2. 如何访问静态属性
1. 在类内部,以名称直接访问
2.在类外部,Person.createdCount
静态方法
语法: 【访问限定符】static 返回值 方法名(参数列表)…
public static void main(String[] args){}
因为没有隐式对象
1. this 关键字不能用
2. 对象的普通属性不能访问
3. 无法调用普通方法
调用静态方法
1. 内部 直接调用
2.外部/内部 类名称.方法(…);