【Java面试题系列第二篇】
抽象类和接口有什么区别?
1、抽象类是一种继承关系,一个类只能有一次继承关系。而接口可以多实现;
2、抽象类中可以有自己的数据成员,也可以有非抽象的成员方法;而在接口中只存在静态、不能被修改的数据成员(就是被static final 修饰的,但是在接口中一般不定义数据成员),接口中所有的方法都是抽象方法;
3、实现抽象类和接口的类必须实现其中所有的方法;
4、接口中定义的变量默认是被public static final修饰的,必须在定义的时候赋初值,而且定义之后不能被改变;接口中声明的方法默认是被public abstract修饰的;
String 和StringBuffer的区别?
String类提供了值不可改变的字符串;而StringBuffer类提供的字符串可以进行修改,StringBuffer类定义的字符串拼接效率高于String类定义的字符串;
运行时异常与一般异常有何异同?
相同点:两者都是异常,继承自Exception这个类;
不同点:java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。