堆:
1. new出来的变量(还有实例变量,数组元素)
2.垃圾:没有任何应用的对象
垃圾回收器(GC)不定时到堆中回收垃圾,回收的过程是透明的(看不到的),不一定看见 垃圾就回收,通过调用System.gc建议JVM尽快调度GC来回收
3.实例变量的生命周期:
创建对象时存储在堆中,对象被回收时一并被回收
4. 内存泄漏:
不再使用的对象,还没被及时收走
建议:不再使用的对象及时将应用设置为null
栈:
1.存储局部变量(包括方法参数)
调用方法时会在栈中为该方法分配一块对于的栈帧,栈帧中存储的局部变量(包括方法参数),方法调用结束时,栈帧被清除,局部变量也一并被清除
局部变量的生命周期:
调用方法时在
调用方法结束时与栈帧一起被删除
方法区:
1.存储.class字节码文件(包括静态变量和普通方法)
2.方法只有一份,通过this来区分具体调用对象
面向对象三大特征总结:
1.封装:
类:封装的是对象的属性行为
方法:封装一段特定的业务逻辑功能
访问控制修饰符:封装的是具体的访问的权限
2.继承:
作用:代码的复用
超类:所有派生类共有的属性
接口:部分派生类共有的属性
派生类:派生类特有的属性
单一继承,多接口实现,具有传递性
3.多态:
所有对象都是多态的(通过向上造型来体现)
所有抽象方法都是多态的(通过方法的重写来体现)