JavaSE--简答题

 

1.finalfinallyfinalize的区别。(3分)

Ø  final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

Ø  finally是异常处理语句结构的一部分,表示总是执行。

Ø  finalizeObject类的一个方法,在垃圾收集器执行的时候会调用回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

评分要求:共计3项,每项1分。

2.ErrorException的区别, Checked异常和Runtime异常的区别。(6分)

ErrorException的区别

Ø  Error类,表示仅靠程序本身无法恢复的严重错误,比如说内存溢出、动态链接异常、虚拟机错误。应用程序不应该抛出这种类型的对象。假如出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以在进行程序设计时,应该更关注Exception类。

Ø  Exception类,由Java应用程序抛出和处理的非严重错误,比如所需文件没有找到、零作除数,数组下标越界等。它的各种不同子类分别对应不同类型异常。可分为两类:Checked异常和Runtime异常。

Checked异常和Runtime异常的区别

Ø  运行时异常:包括RuntimeaException及其所有子类。不要求程序必须对它们作出处理,比如InputMismatchExceptionArithmeticExceptionNullPointerException等。即使没有使用try-catchthrows进行处理,仍旧可以进行编译和运行。如果运行时发生异常,会输出异常的堆栈信息并中止程序执行。

Ø  Checked异常(非运行时异常):除了运行时异常外的其他异常类都是Checked异常。程序必须捕获或者声明抛出这种异常,否则出现编译错误,无法通过编译。处理方式包括两种:通过try-catch捕获异常,通过throws声明抛出异常从而交给上一级调用方法处理。

评分要求:ErrorException的区别,每项1.5分共3

Checked异常和Runtime异常的区别,每项1.5分共3分。

 

3.StringStringBufferStringBuilder区别与联系。(5分)

Ø  String类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象销毁。

Ø  StringBuffer类则代表一个字符序列可变的字符串,可以通过appendinsertreversesetChartAtsetLength等方法改变其内容。一旦生成了最终的字符串,调用toString方法将其转变为String

Ø  JDK1.5新增了一个StringBuilder类,与StringBuffer相似,构造方法和方法基本相同。不同是StringBuffer是线程安全的,而StringBuilder是线程不安全的,所以性能略高。通常情况下,创建一个内容可变的字符串,应该优先考虑使用StringBuilder

评分要求:前两项每项1.5分,第三项2分,本题共5分。

4. HashSet采用了哈希表作为存储结构,请说明哈希表的特点和实现原理。

提示:结合Object类的hashCode()equals()说明其原理6分)

Ø  哈希表的查询速度特别快,时间复杂度为O

Ø  HashMapHashtableHashSet这些集合采用的是哈希表结构,需要用到hashCode哈希码,hashCode是一个整数值。

Ø  系统类已经覆盖了hashCode方法 自定义类如果要放入hash类集合,必须重写hashcode。如果不重写,调用的是Objecthashcode,而ObjecthashCode实际上是地址。

Ø  向哈希表中添加数据的原理:当向集合Set中增加对象时,首先集合计算要增加对象的hashCode码,根据该值来得到一个位置用来存放当前对象,如在该位置没有一个对象存在的话,那么集合Set认为该对象在集合中不存在,直接增加进去。如果在该位置有一个对象存在的话,接着将准备增加到集合中的对象与该位置上的对象进行equals方法比较,如果该equals方法返回false,那么集合认为集合中不存在该对象,在进行一次散列,将该对象放到散列后计算出的新地址里。如果equals方法返回true,那么集合认为集合中已经存在该对象了,不会再将该对象增加到集合中了。

Ø  在哈希表中判断两个元素是否重复要使用到hashCode()equals()hashCode决定数据在表中的存储位置,而equals判断是否存在相同数据。

Ø  Y=K(X) K是函数,X是哈希码,Y是地址

评分要求:前三项每项1分,共3分,原理2分,后两项,每项各0.5分,

本题共6分。

 

5. 实现Java反射技术的主要类有哪些,其作用分别是什么?(5分)

JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中

Ø  Class类:代表一个类

Ø  Field 类:代表类的成员变量(属性)

Ø  Method类:代表类的成员方法

Ø  Constructor 类:代表类的构造方法

Ø  Array类:提供了动态创建数组,以及访问数组的元素的静态方法

评分要求:每项1分,类与作用各占0.5分,本题共5分。

猜你喜欢

转载自www.cnblogs.com/9797ch/p/11817045.html