Java面试题及答案(一)

final、finally、finalize区别

final
  修饰类 不能有子类
  修饰方法 不能被重写
  修饰变量 不能改变值,必须初始化
finally
  异常处理时无论是否有异常被捕获,抛出,finally块都会被执行
  无论发生什么都必须执行的代码放在finally块中
finalize
  方法名,Java允许使用该方法在垃圾收集器把对象从内存清出去之前做必要的清理工作
  在object中定义的,所有类都继承他,子类覆盖finalize()方法整理系统资源或者执行其他清理工作


int、Integer区别

int
  基本数据类型
  初始值0
  不需要实例化
  直接存储数据值
Integer
  int的包装类
  初始值null
  实例化才能使用
  对象的引用,指向new Integer对象


方法重载和方法重写的区别
方法重载
  同一个类里面名字相同的方法
  参数返回值抛出的异常可以不同
  同一个方法根据输入数据的不同做不同的处理 不同的参数列表(静态多态)
方法重写
  子类重写父类的方法 相同参数不同实现(动态多态)
  方法名称参数返回类型一致
  方法修饰大于父类的修饰符
  不能出现新的异常,比父类宽泛的异常
  super()调用父类的方法
  final方法不能重写
  abstract方法必须重写


抽象类和接口的区别
抽象类
  可以有自己的实现
  可以写main方法
  不能被实例化
  子类通过extends继承抽象类
  可以有构造器
  抽象方法可以被public protected default修饰
  可以继承一个类,实现多个接口
  比接口速度快
  抽象类添加新的方法,可以提供默认的实现,不需要改其他类
接口
  不能有自己的实现
  不可以写main方法
  通过implements实现接口中的方法,必须全部实现
  不能有构造器
  被public修饰
  可以继承多个接口
  速度有点儿慢,需要花时间去找他的实现
  添加新的方法必须提供新的实现

猜你喜欢

转载自www.cnblogs.com/DanerBlog/p/9612618.html