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 修饰的方法)不能声明为抽象方法。

抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

 

 

posted on 2019-03-28 23:17  逍遥1989  阅读(133)  评论(0编辑  收藏  举报