Java面试知识点
(1) 关于finalize的问题:因为不可预测性,以及对垃圾回收性能的影响,Object.finalize()方法不推荐使用,并且在Java9中已经被废弃。Java 平台目前在逐步使用 java.lang.ref.Cleaner来逐步替代finalize实现。
(2)使用setter/getter方法时,注意运用copy-on-write原则。
(3)匿名内部类的局部变量被final修饰,因为内部类会copy一份局部变量使用,为了防止出现数据一致性问题。
(4)finally总是执行,除非程序或者线程被中断,不要在finally中使用return语句。
(5)深拷贝和浅拷贝:要么实现Clone接口,要么实现序列化。
(6)final不是immutable(对象引用不变,对象行为可以)!String类为什么要用final修饰?
(7)Java的8种基本数据类型
4种整型:byte(8位)、short(16位)、int(32位)、long(64位)
2种浮点型:float(32位)、double(64位)
1种字符型:char(16位)
1种布尔类型:boolean
(8)Java的抽象类
抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。