疯狂Java讲义 读书笔记(一)
44.内部类的使用: 1.尽量使用静态内部类(调用简单)2.局部内部类没有什么卵用 3.非静态内部类的构造器必须由其外部类的对象来调用 public class SubClass extends Out.In { //显示定义SubClass的构造器 public SubClass(Out out) { //通过传入的Out对象显式调用In的构造器 out.super("hello"); } } 45.匿名内部类:1.必须继承一个父类或者实现一个接口 2.不能是抽象类 3.不能定义构造器 4.JDK1.8以前被匿名内部类访问的局部变量必须使用final修饰,1.8以后会自动加上final修饰 46.枚举类:可以使用枚举类来替代静态final常量 public class Enum { public enum Season{ spring,summer,fall,winter; } public static void main(String[] args) { Season season=Season.spring; System.out.println(season); switch (season){ case spring: System.out.println("spring"); break; case summer: System.out.println("summer"); break; case fall: System.out.println("fall"); break; case winter: System.out.println("winter"); break; } } 47.垃圾回收:1.只负责回收对象,不负责物理资源 2.程序无法精确控制垃圾回收的运行 3.在回收对象前,会调用对象的finalize方法尝试让其获得新的引用以复活 4.finalize方法何时被调用具有不确定性 public class FinalizeTest { private static FinalizeTest ft = null; public void info() { System.out.println("测试资源清理的finalize方法"); } public static void main(String[] args) throws Exception { // 创建FinalizeTest对象立即进入可恢复状态 new FinalizeTest(); // 通知系统进行资源回收 // System.gc(); //① // 强制垃圾回收机制调用可恢复对象的finalize()方法 // Runtime.getRuntime().runFinalization(); //② System.runFinalization(); //③ ft.info(); } public void finalize() { // 让tf引用到试图回收的可恢复对象,即可恢复对象重新变成可达 ft = this; } } 48.引用类型:1.强引用(最常见的引用) 2.软引用(当系统内存空间不够时会被回收) 3.弱引用(比软引用级别更低,当系统垃圾回收机制运行时,无论内存够不够都会被回收) 4.虚引用(没什么用) (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |