历年计算机二级Java考试试题及答案(完整版)

历年计算机二级Java考试试题及答案(完整版)

一 选择题:

1.Java语言程序设计试题及答案
(每小题1分,共40小题,共40分)
1.下列叙述中正确的是( )。
A.一个算法的空间复杂度大,则其时间复杂度必定大
B.一个算法的空间复杂度大,则其时间复杂度必定小
C.一个算法的时间复杂度大,则其空间复杂度必定小
D.上述3种说法都不对

。【解析】算法的时间复杂度和空间复杂度是从不同的角度来衡量算法的执行情况的,它们之间没有内在

2.开发软件时对提高开发人员工作效率至关重要的是( )。
A.操作系统的资源管理功能
B.先进的软件开发工具和环境
C.程序员的数量
D.计算机的并行处理能力

。【解析】先进的软件开发工具和环境对提高开发人员工作效率是至关重要的。

3.程序设计语言的基本成分是数据成分、运算成分、控制成分和( )。
A.对象成分
B.变量成分
C.语句成分
D.传输成分

。【解析】程序设计语言的基本成分有:数据成分,用于描述程序所涉及的数据;运算成分,用于描述程

4.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。
A.125
B.n/2
C.n
D.n+l

。【解析】对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进

下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素

n。

5.有下列二叉树,对此二叉树前序遍历的结果为( )。

A.XZCYAB
B.XYZABC
C.XYABCZ
D.XYAZBC

。【解析】对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在

6.下列叙述中正确的是( )。
A.在面向对象的程序设计中,各个对象之间具有密切的关系
B.在面向对象的程序设计中,各个对象都是公用的
C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小
D.上述3种说法都不对

。【解析】面向对象的程序设计是用对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性

7.软件工程的理论和技术性研究的内容主要包括软件开发技术和( )。
A.消除软件危机
B.软件工程管理
C.程序设计自动化
D.实现软件可重用

。【解析】基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括软件开发技术和软件

8.在对象方法中,一个对象请求另一个对象为其服务的方式是通过发送( )。
A.调用语句
B.命令
C.H令

D.消息

。【解析】在面向对象方法中,对象之间通过消息进行通信。消息中只包含传递者的要求,但并不指

9.下列选项中,是软件调试技术的是( )。
A.错误推断
B.集成测试
C.回溯法
D.边界值分析

。【解析】软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测

10.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。
A.DB包括DBS和DBMS
B.DBMS包括DB和DBS
C.DBS包括DB和DBMS
D.没有任何关系

。【解析】数据库系统(DBS)由数据库(DB)、数据库管理系统(DBMS)、数据库管理员、硬件平台和软
5个部分组成,因此DB和DBMS都是DBS的组成部分。

11.下列( )不是高级程序设计语言。
A.FORTRAN
B.Java
C.C++
D.Visual ASM

。【解析】高级语言是一类人工设计的语言,因为它对具体的算法进行了描述,所以又称为算法语言。它
目前,计算机常用的高级语言有:BASIC语言、FORTRAN语言、COBOL
PASCAL语言、C语言、PROLOG语言、而当前流行的,面向对象的程序设计语言有C++和用于网络环
Java等。

12.16根地址总线的寻址范围是( )。
A.531KB
B.64KB
C.640KB
D.1MB

。【解析】假设地址总线有n条,内存的寻址范围是2n。

13.在一所大学中,每个系都有自己的局域网,则连接各个系的校园网( )。
A.是广域网
B.还是局域网
C.是地区网
D.这些局域网不能互连

。【解析】广域网是指远距离的计算机互联网络,分布范围可达几千千米乃至上万千米甚至跨越国界、州

14.下列关于信息加密的叙述中,正确的是( )。
A.加密通过加密算法实现
B.加密前的文件称为密文
C.加密后的文件称为明文
D.将明文变为密文的过程称为解密

。【解析】一般人们将加密前的文件称为明文,而加密后的文件称为密文,因此加密的目的就是将明文变

15.下列关于域名和IP地址的叙述中,不正确的是( )。
A.在Internet中访问一台主机必须使用它的主机名
B.200.201.202.203是一个C类I P地址
C.I P地址采用的是分层结构
D.主机名与I P地址是一一对应的

。【解析】每台直接连接到Internet上的计算机、路由器都必须有唯一的IP地址。IP地址是Internet
Internet中的计算机与路由器的IP地址采用分层结构,它是由网络地址与主机地址两
C类地址,其网络地址空间长度为21位,主机地址空间长度为8位,C类I P地址范围从:
.0.0.0~223.255.255.255。主机名与它的IP地址一一对应,因此在Internet上访问一台主机
I P地址。

16.Java语言中。负责并发管理的机制是( )。
A.垃圾回收
B.虚拟机
C.代码安全
D.多线程

。【解析】多线程是Java程序的并发机制,它能同步共享数据、处理不同的事件。

17.下列描述中,错误的是( )。
A.Java要求编程者管理内存
B.Java的安全性体现在多个层次上
C.Applet要求在支持Java的浏览器上运行
D.Java有多线程机制

。【解析】为了充分利用资源,Java有一个系统级的线程,用来对内存的使用进行跟踪,它可以在系统空

18.Java为移动设备提供的平台是( )。
A.J2ME B.J2SE
C.J2EE D.JDK 5.0

。【解析】Java 2平台包括:J2ME平台、J2SE平台和J2EE平台。其中:J2ME是为嵌入式和移动设备提供
Java平台;J2SE是面向企业级应用与服务的综合性标准开发平台;J2EE是面向大型企业级用容器管理
JDK 5.0是一个Java开发软件包。

19.JDK中提供的文档生成器是( )。
A.javadoc.exe
B.javap.exe
C.java.exe
D.javaprof.exe

。【解析】在JDK中:javadoc.exe是文档生成器,将Java源代码和包以MML格式生成AP文档;java.exe
Java解释器;javap.exe是Java反汇编器;javaprof.exe是Java剖析工具,提供解释器剖析信息。

20.下列不属于Swing中构件的是( )。
A.JPanel
B.JTable
C.Menu
D.JFrame

。【解析]JPanel是Swing的中间容器;JTable是Swing中可编辑信息的构件;JFrame是Swing的顶层容

.阅读下面程序
importjava.io.*;
public class TypeTransition{
public static void main(String args[]){
char a=’h’;
int i=100 ;
int J=97;
int aa=a+i;
System.out.println(“aa=”+aa);

char bb=(char)j;
System.out.println(“bb=”+bb):
}
}
21 如果输出结果的第二行为bb=a,那么第一行的输出结果是( )。
A.aa=I
B.aa=204
C.aa=v
D.aa=156

。【解析】本题考查的是Java的基本数据类型及其运算。程序开始生成了一个字符型变量a和3个整
i、j、aa。而整型变量aa的初始值是a+i,其中a是一个字符
型变量。如何进行加法运算呢?Java语言规定,char型数据可以自动转换成int类型,转换的结果就
ASCIl码值。因此,整型变量aa的初始值为字符”h”的ASCIl码值加上l00。如果记住h的
码值是104,则直接就确定aa的初始值是204,选项B为正确答案。如果记不得h的ASCIl码,题
bb=a”,也就是字符bb的值为字符a,bb的生成语句
char bb=(char)j,是把整型变量j的值强制转换为字符型。同样,把ASCIl码值为j(97)所对应的字符
bb。显然,字符a的ASCIl码值为97,字符b的ASCIl码值为98,依次类推,字符h的ASCIl码
l04。因此,本题的正确答案是B。

.阅读下面程序
public class Operators And Expressions(
void equals Methodl(){
Stringsl一new String(“how are you”);
Strings2=new String(“how are you”);
System.out.println(s1= =s2):
}
public static void main(String args[]){
Operators And Expressions Oper And Exp=new Oper-
ators And Expressions
();
//用于复合类型数据的”= =”运算符
OperAndExp.equalsMethodl();
}
}
22 程序运行结果是( )。
A.= =
B.true
C.false
D.equal

。【解析】本题考查的是Java语言中运算符的特殊用法。相等比较运算符"= =",不仅可用于基本类型的
"= ="运算,其比较的

equals()方法。
equalsMethodl()的代码非常简单,首先生成两个字符串对象sl和s2,然后输出表达式"sl=
的结果。根据上面介绍的相等比较运算符的用法,字符串对象sl和s2是复合类型数据,因此表达式
比较的是sl和s2是否同一个对象。显然,sl和s2虽然具有相同的值,即"how are you",但
C。

.阅读下面代码
if(x= =0){System.out.println(“冠军”);)
elseif(x>一3){System.Out.println(“亚军”);}
else{System.out.println(“季军”);}
23若要求打印字符串”季军”,则变量X的取值范围是( )。
A.x=d&x<=-3
B.x>O
C.x>-3
D.x<=-3

.D。【解析】本题考查的是条件分支语句if-else。if-else根据判定条件的真假来执行两种操作中的一
if语句后面的代码块;当条件为假时,执行else后面的代码块。题目中的代码
if-else的嵌套语句,根据if-else语句的执行过程来进行分析。当x的值为0时,布尔表达式
的结果为真,就输出”冠军”;当x的值不为0时,则执行else语句中的内容。else语句中的代
if-else语句,还是和上面一样进行分析。当X的值不等于0且大于-3时,布尔表达式”x>-3”
“亚军”;当x的值不等于0且不大干-3,也就是X的值不等于0同时x的值小于等于-3
“季军”。经过上述分析可知,要想输出"季军",x所满足的条件为x!=O&x<=-3,但是当x<=-3
x的值一定不会为0。所以,X所满足的条件可以简写为x<=-3。因此,本题的正确答案为D。

24.下列关于构造方法的叙述中,错误的是( )。
A.Java语言规定构造方法名与类名必须相同
B.Java语言规定构造方法没有返回值,但不用void声明
C.Java语言规定构造方法不可以重载
D.Java语言规定构造方法只能通过new自动调用

。【解析】本题考查的是构造方法的使用。Java语言中,构造方法是一种特殊的方法,是为对象初始化操
Java中的每个类都有构造方法,它也是由方法名、参数和方

·构造方法的名字必须与类名相同。
·构造方法不返回任何数据,但不用void来声明。
·用户不能直接调用构造方法,必须通过关键字new自动调用。
·构造方法可由用户在类中定义,默认时由Java语言自动生成。但它是个空方法,变量被赋予该数据

·在构造方法实现中,可以进行方法重载,即定义多个构造方法。重载构造方法的目的是使类具有不
C的说法是错误的。

25.下列适配器类中不属于事件适配器的是( )。
A.MouseAdapter
B.KeyAdapter
C.ComponentAdapter
D.FrameAdapter

。【解析】本题考查java.awt.event包中定义的适配器类。该包中定义的适配器类包括①ComponentAdapter
容器适配器;③FocusAdapter焦点适配器;④MouseAdapter鼠标适配
键盘适配器⑥WindowAdapter窗口适配器,由此可知本题答案为D。

26.下列类中属于字节输入抽象类的是( )。
A.FileInputStream
B.ObjectInputStream
C.FiterInputStream
D.InputStream

D。【解析】在Java中定义了两种类型的流,字节型和字符型,这两种流分别用4个抽象类表示:
,OutputStream,Reader,Writer,其中InptutStream和OutStream表示字节流,Reader和
是表示字符流,所以字节输入抽象类为InptutStream。

27.能向内部直接写入数据的流是( )。
A.FileOutputStream
B.FileInputStream
C.ByteArrayOutputStream
D.ByteArraylnputStream

。【解析】本题考查Java的内存读写。在java.io中,还提供了 ByteArrayInputStream、
和StringBufferInputStream类可直接访问内存,它们是InputStream和
的子类。用ByteArrayOutputStream可向字节数组写入数据;ByteArrayInputStream可从字

.下列运算符中属于关系运算符的是( )。
A.= =
B.=
C.+ =
D.- =

。【解析】本题考查Java的关系运算符。B中写法不正确,C、D均为赋值运算符。

28.下列方法中,声明抛出InterruptedException类型异常的方法是( )。
A.suspend()
B.resume()
C.sleep()

D.start()

。【解析】本题考查线程的基本操作。Java中提供了interrupt方法用来中断一个线程,当调用一个线程
interrupt方法时,即向该线程发送一个中断请求。在调用线程的interrupt方法时,如果该线程由于
sleep方法或wait方法而正在处于阻塞状态,那么线程会抛出一个InterruptException异常。

29.下列关于System类的叙述中,错误的是( )。
A.System类是一个final类
B.System类不能实例化
C.System类中没有定义属性
D.System类主要提供了系统环境参数的访问

。【解析】本题考查System类的基本知识。Systern类是一个final类,所有的方法都用类变量来调用,
System类不可能实例化。System类主要用来提供标准输入/输出和系统环境信息的访问设置。而System

;标准输出;③pubhc static finalPrintStream err;标准错误输出。

.阅读下面程序
public class Increment{
public static void main(stringargs[]){
int C;
c=5:
System.out.println©;
System.out.println(c++):
System.out.println©;
}
}
30程序运行结果是( )。
A.5
6
6
B.5
5
6
C.6
7
7
D.6
6
6

。【解析】本题考查的是Java增量运算符"++"。 x++是先使用后加l,即首先使用X的值进行表达式的计
x的值加1。而++x是先加1后使用,即首先对x的值加1,然后使用x的值进行表达式的计
C,其初始值为5。第一条输出语句输出c的初始值,即5。然后,第二条

c++的结果,即先输出C的值,然后才对c的值加1,所以,第二条输出语句输出的是5,输出
c的结果才为6。最后一条输出语句输出结果为6。因此,本题的正确答案为B。

31.下列叙述中,错误的是( )。
A.JavaApplication与Applet所用编译命令相同
B.通常情况下JavaApplication只能有一个main()方法
C.JavaApplet必须有HTML文件才能运行
D.JavaApplet程序的.class文件可用Java命令运行

。【解析】本题考查的是Java中的Applet以及Applet与Application的区别。Applet是能够嵌入HTML
Applet的运行环境是Web浏览器,所以必须建立HTML文件,告诉
Applet。因为Applet是不能直接通过Java命令行启动运行的。所以选项D的说法

32.下列关于Java语言中线程的叙述中,正确的是( )。
A.线程由代码、数据、内核状态和一组寄存器组成
B.线程间的数据是不共享的
C.用户只能通过创建Thread类的实例或者定义和创建Thread子类的实例,建立和控制自己的线程

D.因多线程并发执行而引起的执行顺序的不确定性可能造成执行结果的不确定

。【解析】本题考查线程的基本知识。线程与进程在概念上是相关的,线程是由表示程序运行状态的寄存
程序计数器、栈指针以及堆栈组成,它不包含进程地址空间中的代码和数据。代码所操作的数据是Java

据可以被多个线程共享,也可不共享。Java语言中提供两种创建线程的方法,一种是通过继承Thread
Runnable接口来创建线程。

33.处理对象传输的接口是( )。
A.Serializable
B.C:loneable
C.hemListener
D.ActionListener

。【解析】处理对象传输就是把对象串行化。Java语言中,如果要串行化某些类的对象,这些类就必须实
Serializable接口。

34.在读取二进制数据文件的记录时,为了提高效率常
常使用的一种辅助类是( )。
A.InputStream
B.FileInputStream
C.StringBuffer
D.BufferedReader

。【解析】本题考查Java语言的输入/输出流。InputStream类、FilelnputStream类和BufferedReader

Java语言中和输入输出直接相关的类,不属于辅助类,因此可以直接判断出选项C为正确答案。

35.在Applet中显示文字、图形等信息时,应使用的方法是( )。
A.init()
B.start()
C.paint()
D.destroy()

。【解析】paint()是与Applet显示相关的方法,由它来具体执行Applet的绘制功能。init()方法用于初
Applet,start()方法用于激活Applet。在init()方法完成后,将调用start()方法,而且在Applet
destroy()方法用于彻底终止Applet。

36.关于线程的生命周期以下状态正确的是( )。
A.新建状态、可运行状态、阻塞状态、恢复状态和终止状态
B.新建状态、运行状态、阻塞状态、恢复状态和终止状态
C.新建状态、可运行状态、运行状态、阻塞状态和终止状态
D.新建状态、可运行状态、运行状态、恢复状态和终止状态

。【解析】线程生命周期中出现的状态包括:新建状态、可运行状态、运行状态、阻塞状态和终止状态。

37.Thread类中能运行线程的方法是( )。
A.resume()
B.start()
C.run()
D.init()

。【解析】resume()是Thread类提供的用于线程控制的方法;start()是Thread类中的方法,新建的线程
start()方法才能运行该线程;run()是Thread类中的方法,在该方法中
线程开始执行时,就是从它的run()方法开始执行的,就像Java应用程序从main()
Applet从ink()开始一样;init()不是Thread类中的方法。

38.以下不是APPLET标记的选项是( )。
A.PARAM
B.BODY
C.CODEBASE
D.ALT

。【解析】标记的一般格式是:

[CODEBASE=codebaseURL]
CODE=appletFile
[ALT=alternateText]
[NAME=appletlnstanceName]

WIDTH=pixels
HEIGHT=pixels
[ALIGN=alignment]
[VSPACE=pixels]
[HSPACE=pixels]
[ARCHIVE=archiveFiles]

[
ue>]
[
ue>]
[alternateHTML]
因此可以看出,选项B不是APPLET标记。

39.在Java中,与数据库连接的技术是( )。
A.开放数据库连接
B.Java数据库连接
C.数据库厂家驱动程序
D.数据库厂家的连接协议

。【解析】开放数据库连接(ODBC,Open Datebase Connectivity),它是用C语言定义的。由于J2EE要求
Java绑定,因此规定使用Java数据库连接(JDBC,Java DataBase Connectivity),作为Java与数据库

二 基本操作题(共18分)

本题定义了一个求两个数的最大值的方法max,并调用该方法计算67和23的最大值。
public class javal{
public static void main(String[]args){
javal temp=new javal();
int res=max(67,23);
System.out.println(“res=”+res);
}
static int maX( ){
int maxNum;
if(a>b)

else
maxNum=b;

}
}

1处:int a,int b
第2处:maxNum=a

第3处:return maxNum
【解析】第1处定义max()方法中的两个整型形参;第2处将两者中较大的赋给maxNum;第3处返回

三、简单应用题(共24分)

本题的功能是对下拉菜单项的操作,包括添加和删除。页面包括一个下拉菜单、一个文本框和两个按

import java.awt.
import java.awt.event.

public class java2 extends java.applet.Applet imple-
ments hemListener,ActionListener
{Choice choice;
TextField text;
TextArea area;
Button add,del;
public void init() .
{choice:new Choice();
text=new TextField(8);
area:new TextArea(6,15);
choice.add(“音乐天地”);
choice.add(“武术天地”);
choice.add(“象棋乐园”);
choice.add(“交友聊天”);
add=new Button(“添加”);
del=new Button(“删除”);
add.addActionListener(this);
del.addActionListener(this);
choice.addItemListener(this);
add(choice);
add(del);add(text);add(add);add(area);
}
public void itemStateChanged(hemEvent e)
{String name= ;
int index=choice.getSelectedIndex();
area.setText("\n"+index+":"+name);
}
public void actionPerformed(ActionEvent e)
{if(e.getSource()= =add||e.getSource()= =
text)
{String name=text.getText();
if(name.length()>0)

{choice.add(name);
choice.select(name);
area.append("\n添加"+name);
}
}
else if(e.getSource()= =del)
{choice.remove( );
area.append("\n删除"+choice.getSelectedItem
());
}
}
}

1处:choice.getSelectedltem()
第2处:choice.getSelectedIndex()
【解析】第1处是获取当前选中项的数据;第2处清除选中项的索引号。

四 综合应用题(共18分)

本题的功能是定义自已的组件类。窗口中排布着12
个按钮,鼠标移动按钮时,按钮背景颜色改变,用鼠标单击
按钮时,后台将显示该按钮对应的字符。
import java.awt.
import java.awt.event.

import java.util.
class java3 extends Frame{
String keys="l23456789
0#";
java3(){
super(“java3”);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(O);
}
});
setLayout(new GridLayout(4,3,6,6));
for(int i=0;i
KeyButton kb=new KeyButton(keys.charAt
(i));
kb.addkeyListener(this);
kb.setBackground(Color.pink);
kb.setForeground(Color.black);
add(kb);
}
setSize(200,200);
show();

}
class KeyEventHandler extends KeyAdapter{
public void keyTyPed(KeyEvent evt){
System.out.println(evt.getChar());
}
}
public static void main(String[]args){
newjava3();
}
}
class KeyButton extends Component{
KeyListener keyListener;
boolean highlighted;
char key;
KeyButton(char k){
this.key=k;
addMouseListener(new MouseEventHandler()):
}
public void paint(Graphics g){
int W=getSize().width;
int h=getSize().height;
String s=""+key;
FontMetrics fm=g.getFontMetrics();
if(highlighted){
g.setColor(getBackground());
g.fillRoundRect(0,0,w-1,h-1,10,10);
}
g.setColor(getForeground());
g.drawRoundRect(0,0,w-1,h-1,10,10);
g.drawString(s,(w-fm.stringWidth(s))/2,
(h-fm.getHeight())/2+fm.getAscent());
}
class MouseEventHandler extends MouseAdapter{
public void mousePressed(MouseEvent evt){
if(keyListener!=null){
keyListener.keyTyped(
new KeyEvent(KeyButton.this,KeyEvent.KEY_
TYPED,
System.currentTimeMillis(),
0,KeyEvent.VK_UNDEFINED,key));
}
}
public void mouseEntered(MouseEvent evt){
highlighted=true;

repaint();
}
public void mouseExited(MouseEvent evt){
highlighted=false;
repaint();
}
}
public synchronized void addKeyListerner(KeyLis-
tener l){
keyListener=AWTEventMuhieaster.add(key-
Listener,1);
}
public synchronized void removeKeyListener(Key-
Listener l){
keyListener=AWTEventMuhicaster.remove
(keyListener,1);
}
}

1处:int i=0;i
第2处:kb.addKeyListener(new KeyEventHandler())
第3处:system.out.println(evt.getKeyChar())
【解析】第1处是作为遍历keys中元素的条件,而keys中的字符元素就是各个按钮对应的字符。第
处注册键盘事件监听功能,KeyButton实现了KeyLIstener接口,而kb是KeyButton类的对象,所以它
3处将从键盘读到的字符输出。

发布了54 篇原创文章 · 获赞 5 · 访问量 3348

猜你喜欢

转载自blog.csdn.net/qq_43674360/article/details/103970857