1、 谈谈final, finally, finalize的区别。
final
用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally
是异常处理语句结构的一部分,总是被执行。
finalize
是
Object
类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
2、 String s = new String("xyz");创建了几个String Object?
答:产生两个实例化对象,一个是匿名对象
”xyz”
,另外一个是通过
new
关键字实例化的。
3、 Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
答:
12
;
-11
。
(round
方法为四舍五入
)
4、 short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:第一个有错,类型不匹配。
S1
提升为
int
,后将
int
转为
short
。损失精度,报错。
第二个没错。
5、 Java有没有goto?
答:有,是保留字。
6、 数组有没有length()这个方法? String有没有length()这个方法?
答:没有,但有
length
这个属性,
String
没有
length
方法,但有
length
属性。
7、 Overload和Override的区别。Overload的方法是否可以改变返回值的类型?
答:重载
overload
·在一个类中定义的若干方法;
·所有的方法名称相同,但是参数的类型或个数不同;
重写
Override
·在继承的关系中;
·子类定义了与父类同名的方法,参数类型或个数最好完全一样,注意访问权限不能更加严格;
重载的时候不是依靠返回值类型区分的,而是靠参数。
8、 给我一个你最常见到的runtime exception。
答:
NullPointerException
、
ClassCastException
、
ArithmeticException
、
IndexOutofBoundsException
、
NumberFormateException
9、 error和exception有什么区别?
答:
Error
表示是由
JVM
处理的,是
JVM
出错;
Exception
是可以由程序进行处理的,使用
try…catch
处理
10、 abstract class和interface有什么区别?
答:抽象类
·由抽象方法和常量、变量、全局常量、构造方法、普通方法组成;
·使用
abstract
声明;
·子类要通过
extends
继承抽象类,子类如果不是抽象类,则必须覆写抽象类中的全部抽象方法;
·存在单继承局限,一个子类只能继承一个抽象类;
·抽象类可以实现若干个接口;
接口
·全部由抽象方法和全局常量组成;
·使用
interface
声明;
·子类通过
implements
实现接口,子类如果不是抽象类,则必须覆写抽象类中的全部抽象方法;
·不存在单继承局限,一个子类可以同时实现多个接口;
·接口不能继承一个抽象类,但是允许继承多个接口;