java测试题_参考答案 下载本文

内容发布更新时间 : 2024/5/4 8:56:42星期一 下面是文章的全部内容请认真阅读。

一、简答题(34’)

1. JVM是什么?简述JVM的功能?(2’)

JVM (Java Virtual Machine的缩写,表示Java虚拟机),是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。

JVM的功能:

1、提供运行时环境(类加载器、字节码校验器、代码生成器) 2、提供垃圾回收机制

3、提供中立的体系结构,即字节码

2. Java源文件组成元素?(2’)

一个Java源文件可包含三个“顶级”要素: (1)一个包(package)声明(可选) (2)任意数量的导入(import)语句 (3)类(class)声明

3. Java的数据类型有哪些?(2’)

Java的数据类型可分为基本数据类型与引用数据类型。 基本数据类型:boolean byte char short int long float double 引用数据类型:类 接口 数组

4. 面向对象程序设计语言的四大特性?简述每个特性的特点?(3’)

面向对象四大特性:抽象、封装、继承、多态

抽象:将一类具有相同属性和行为的事物抽象形成类的过程。 封装:遵循大原则(属性私有,方法公开),工具方法也私有

继承:不劳而获,父类的属性和方法被子类继承而来。子类对父类的成员可以吸收、增加、改造。 多态:同一种调用形式,作用于不同的对象,产生不同的反应

5. this关键字的特点?super关键字的特点?(2’)

this关键字:

·通过this操作类中的属性和普通方法; ·使用this调用本类的构造方法,放在首行; ·this表示当前对象; super关键字:

·用来显示调用父类多少参数的构造方法,注意点:必须放在第一行、必须放在子类构造方法里面、super调用的时候的参数要跟父类的构造方法匹配 ·用来调用父类的属性和方法

6. static关键字的特点?(2’)

static修饰属性:表示该属性是静态属性,属于类的属性,只被初始化一次,可以修改多次。 static修饰方法:表示该方法是静态方法,属于类的方法,注意的是:静态的方法只能访问静态的成员(变量和方法),如果非要静态去访问非静态,传递一个自身类类型的对象。

static修饰代码块:表示在类加载的时候调用的语句块,是在所有语句块之前执行的代码。

7. final关键字的特点?(2’)

·修饰类:说明这一个类不能被继承,说明该类是最终类 ·修饰方法:说明这个方法是不能被子类覆盖的方法

·修饰变量:此时该变量相当于常量,即只能做一次初始化,以后就不能修改了。

8. 重写和重载的特点与区别?(2’)

重载:发生在同一个类中,方法名称相同、参数不同(类型、顺序、个数),仅仅依靠返回值不同,不能构成方法重载。

复写:发生在父子继承类中,方法名称相同,方法参数相同,方法返回值基本也相同,方法的修饰符基本也相同。满足“两同两小一大”原则

9. 满足多态的条件?(2’)

1. 有父子关系(即继承)

2. 子类的方法对父类的方法满足复写原则 3. 父类的对象用子类对象来实例化 4. 父类对象调用被子类复写的方法

10. 抽象类和接口的比较?(3’)

11. Java异常处理机制的组成部分以及处理异常的流程?(3’)

Java异常处理是由try、catch与finally三个关键字所组成的程序块,其语法如下:

Java异常处理流程:

1、可能出现异常的代码都应放在try代码块中。try程序块若是有异常发生时,程序的运行便中断,并抛出“异常类所产生的对象”。然后将程序控制转交给catch块。

2、抛出的对象如果属于catch()括号内欲捕获的异常类,则catch会捕捉此异常,然后进到catch块里

继续运行。一个try块可以和多个catch块配合以处理多个异常。多捕获是要按照从小到大的顺序进行异常声明。

3、无论try程序块是否有异常产生,或者产生的异常是否与catch()括号里的异常相同,最后一定会运行finally块里的程序代码。finally通常用作资源的释放工作。

4、finally的程序代码块运行结束后,程序再回到try-catch-finally块之后继续执行。

12. Java内定义注解有哪些?分别的作用是什么?元注解有哪些?分别的作用是什么?(3’)

Java内定义的三种标准Annotation:

:覆写的Annotation

:不赞成使用的Annotation(过期、失效)

:压制安全警告的Annotation(忽略警告)

四种元注解:

@Target:表示该注解用于什么地方。

@Retention:表示在什么级别保存该注解信息。 @ Documented:将此注解包含在javadoc中。 @ Inherited:允许子类继承父类中的注解。

13. 当利用HashSet存放自定义类类型的数据时,需要复写哪些方法来确保元素的唯一性?

当利用TreeSet存储自定义类类型的数据时,需要怎么处理来确保元素有序?(3’)

·当利用HashSet存放自定义类类型的数据时,通常需要复写equals和hashCode方法来确保元素的唯一性。还需要复写toString实现自己的输出。

·当利用TreeSet存储自定义类类型的数据时,通常需要指定排序规则。

对于自动排序功能而言:Java提供了一个Comparable接口,该接口里定义了一个comparaTo(Object obj)方法。Java的一些常用类已经实现了Comparable接口,并提供了比较大小的标准。如:BigDecimal、BigInteger、数值类型对应的包装类,Character、Boolean、String、Date、Time等。但是对于自定义类而言,我们需要自己实现Comparable接口,然后复写该接口的compareTo方法来定义自己的排序方法(对于比较的过程中出现相同的因子,会只显示一个)。

对于定制排序功能而言:在创建TreeSet对象时提供一个Comparator实现类对象与该TreeSet集合关联,由Comparator实现类对象负责集合元素的排序逻辑。所以我们要定义一个Comparator的实现类,在该实现类中复写Comparator的compare方法来定制自己的排序规则。

14. 集合常见的遍历方式有哪些?(3’)

比如对于集合Collection coll = new ArrayList(); ·利用toString()

System.out.println(coll); ·利用迭代器

Iterator it = coll.iterator(); while(it.hasNext())

System.out.print(it.next() + \ \System.out.println(); ·利用for_each结构

for(Integer i : coll)

System.out.print(i + \ \System.out.println();