1、静态块和实例化块分别在什么时候执行?
静态块在类加载时执行,只执行一次。
实例化块在产生对象时执行,每产生一个对象执行一次,在super()之后执行。
2、什么是内部类?内部类class文件是怎样命名的?
在一个类中再定义一个类,称为内部类。内部类相当于外部类的属性,内部类对象的产生必须依赖于外部类对象。
内部类class文件的命名规则:外部类名$内部类名.class
3、什么是多态?多态有什么特点?
多态是指,允许使用父类变量引用子类对象,允许使用接口变量引用实现类对象,但反过来却不行。
多态的特点:相同的行为,不同的实现方式。
4、什么是抽象类?什么是抽象方法?
如果一个方法只有定义,没有具体的内容,称为抽象方法,用abstract修饰。
用abstract修饰,并允许该类中定义抽象方法的类称为抽象类。
5、接口如何定义?实现接口用什么关键字?一个类实现接口必须做什么?
定义接口:interface
实现接口:implements
一个类实现接口,需要重写该接口中定义的所有抽象方法,否则该类只能是抽象类
6、接口中定义的方法修饰符是什么?接口中定义的变量修饰符是什么?
接口中定义的方法修饰符为:public abstract
接口中定义的变量修饰符为:public static final
7、什么是异常?Error和Exception有什么区别?
异常是描述出错信息的对象。
Throwable是父类,有两个子类:Error和Exception。
Error表示崩溃级别的出错,开发者可以捕获,但无法处理。
Exception表示普通级别的出错,开发者可以捕获,可以处理。
8、异常的执行顺序怎样?如果在try块中有return,finally会执行吗?
先执行try块,顺序执行,如果发生异常转到catch块执行,同时中止try块中的其余代码。无论是否有异常,都会执行finally块。
如果在try块或catch块中有return语句,finally会在跳出方法前执行。
9、throw 和throws的区别是什么?
throw是语句,表示显式抛出异常对象。throw new Exception();
throws是方法修饰符,表示该方法可能会抛出某种异常。在调用该方法时,需要处理该方法抛出的异常。
10、异常分为几种?如何区分?
异常分为编译期异常(检查异常)和运行期异常(非检查异常)。
其中编译期异常,要求开发者必须处理。如果不处理,无法通过编译。
运行期异常,开发者可处理,可不处理。如果不处理,也可以通过编译。
所有运行期异常是RuntimeException的子类。