用自己的话回答面试内容(2020面试准备。自用更新)
1、JRE、JDK、JVM的关系
- JRE
- 是Java的运行环境,包含了JVM、runtime class libraries和Java application launcher
- JDK
- 包括了Java运行环境JRE、Java工具和Java基础类库。
- JVM
- java虚拟机,java文件编译成.class文件,在虚拟机上执行。是java能够跨平台使用的基础。
2、八大数据类型
short(16)、int(32)、long(64)、boolean、byte(8)、char(2)、double(64)、float(32)
3、面向对象的四大特性和理解(面向对象的理解?设计类的方式?)。
- 多态
- 一个父类的引用根据创建不同的子类,产生出来不同的结果。
- 例如坦克大战中的不同种类的坦克敌人。
多态的前提条件: 必须有继承体系 必须有方法的重写 必须满足一种写法:父类引用指向子类的对象/向上转型
- 继承
- 通过关键字“extends” 继承
Java是单继承体系,就是只能有一个父类。
而可以有多层继承,即可以有爷爷类,祖宗类。
子类拥有父类的所有成员方法和成员属性。 - 例如坦克大战中不同的敌人继承于同一个父类 坦克 。
- 封装
- 作为一种规范,并且保证了数据的安全性。
- 一般为两个步骤 先将成员属性私有化,使得外界无法直接进行访问。
然后在对外提供get / set 的方法来进行获取值和修改。 - 抽象
1.抽象类无法被创建出来,无法被示例化,无法new出来 2.抽象类只能被继承 3.抽象类中可以有成员属性,可以有成员方法,可以有构造方法,还可以有抽象方法 4.普通正常子类必须重写抽象类中所有的抽象方法,并且还要向上追溯重写父级中所有的抽象方法
- 抽象可以将一些对象拥有同样的内容放在同一个类里面,然后对其进行继承。增加了代码的复用性。
同样的,在对子类进行修改时候,也会受到父类的一些限制,也算是起到了一定的保护作用,对维护有一定帮助。
4.重载和重写的理解?
- 重写
- 子类重写父类的方法
- 重载
- 同一个方法名,参数数量不同、参数类型不同、参数顺序不同。
访问权限的区别
5.final,finally,finalize的区别和作用?
- final
- 变量被final修饰表示只能被赋值一次,相当于一个常量。
方法被final修饰的话,表示无法被重写。
类被final修饰的话,表示无法被继承。 - finally
- 在try - catch中所提供的代码块,在finally代码块中,无论是否出现异常,都会执行其中的内容。
- finalize
Java中垃圾回收机制中的方法(待理解,不是很懂这个的说明)
6.运行时异常与一般异常有何异同?
- 运行时异常
- 运行时异常都是RuntimeException类及其子类异常,就是我们在开发中测试功能时程序终止,控制台出现的异常。
例如
NullPointerException(空指针异常)、
IndexOutOfBoundsException(下标越界异常)
ClassCastException(类转换异常)
ArrayStoreException(数据存储异常,操作数组时类型不一致)
IO操作的BufferOverflowException异常
- 一般异常
- checked exceptions 非运行时异常 (编译异常):是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等。
通俗的话说就是在写代码时出现红线,需要try catch或者throws时出现的异常。