1、 历年 全国计算机等级考试二级 Java 语言程序设计试题及答案 一、选择题 (每小题 1分,共 40小题,共 40分 ) 1下列叙述中正确的是 ( )。 A一个算法的空间复杂度大,则其时间复杂度必定大 B一个算法的空间复杂度大,则其时间复杂度必定小 C一个算法的时间复杂度大,则其空间复杂度必定小 D上述 3种说法都不对 D。【解析】算法的时间复杂度和空间复杂度是从不同的角度来衡量算法的执行情况的,它们之间没有内在联系。 2开发软件时对提高开发 人员工作效率至关重要的是 ( )。 A操作系统的资源管理功能 B先进的软件开发工具和环境 C程序员的数量 D计算机的并行处理能力 B。【解析】先进的软
2、件开发工具和环境对提高开发人员工作效率是至关重要的。 3程序设计语言的基本成分是数据成分、运算成分、控制成分和 ( )。 A对象成分 B变量成分 C语句成分 D传输成分 D。【解析】程序设计语言的基本成分有:数据成分,用于描述程序 所涉及的数据;运算成分,用于描述程序中所包含的运算;控制成分,用于描述程序中所包含的控制;传输成分,用于表达程序中数据的传输。 4对长度为 n 的线性表进行顺序查找,在最坏情况下需要比较的次数为 ( )。 A 125 B n 2 C n D n+l C。【解析】对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查
3、找到所要找的元素为止。在最坏情况 下,要查找的元素是表的最后一个元素或查找失败, 这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。 5有下列二叉树,对此二叉树前序遍历的结果为 ( )。 A XZCYAB B XYZABC C XYABCZ D XYAZBC D。【解析】对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结 点,再依次访问其左、右子树。 6下列叙述中正确的是 ( )。 A在面向对象的程序设计中,各个对象之间具有密切的关系 B在面向对象的程序设计中,各个对象都是公用的 C在面向对象的程序设计中,各个对象之
4、间相对独立,相互依赖性小 D上述 3种说法都不对 C。【解析】面向对象的程序设计是用对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系。 7软件工程的理论和技术性研究的内容主要包括软件开发技术 和 ( )。 A消除软件危机 B软件工程管理 C程序设计自动化 D实现软件可重用 B。【解析】基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括软件开发技术和软件工程管理。 8在对象方法中,一个对象请求另一个对象为其服务的方式是通过发送 ( )。 A调用语句 B命令 C H 令 D消息 D。【解析】在面向对象方法中,对象之间通过消息进行通信。消息中只包
5、含传递者的要求,但并 不指示接受者应该怎么完成这些处理。 9下列选项中,是软件调试技术的是 ( )。 A错误推断 B集成测试 C回溯法 D边界值分析 C。【解析】软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测试的方法。 10数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是 ( )。 A DB 包括 DBS 和 DBMS B DBMS 包括 DB 和 DBS C DBS 包括 DB 和 DBMS D没有任何关系 C。【解析】数据库系统 (DBS)由数据库 (DB)、数据库管理系统 (DBMS)、数据库管理员、硬件平台和软件平台 5个部分组成
6、,因此 DB 和 DBMS 都是 DBS 的组成部分。 11下列 ( )不是高级程序设计语言。 A FORTRAN B Java C C+ D Visual ASM D。【解析】高级语言是一类人工设计的语言,因为它对具体的算法进行了描述,所以又称为算法语言。它是面向程序设计独立于计算机的硬件。目前,计算机常用的 高级语言有: BASIC 语言、 FORTRAN 语言、 COBOL语言、 PASCAL 语言、 C语言、 PROLOG 语言、而当前流行的,面向对象的程序设计语言有 C+和用于网络环境的程序设计语言 Java 等。 12 16 根地址总线的寻址范围是 ( )。 A 531KB B 6
7、4KB C 640KB D 1MB B。【解析】假设地址总线有 n 条,内存的寻址范围是 2n。 13在一所大学中,每个系都有自己的局域网,则连接各个系的校园网 ( )。 A是 广域网 B还是局域网 C是地区网 D这些局域网不能互连 B。【解析】广域网是指远距离的计算机互联网络,分布范围可达几千千米乃至上万千米甚至跨越国界、州界、遍及全球范围。局域网是指一个局部区域中的、近距离的计算机互联网络,通常采用有线方式连接,分布范围从几百米到几千米。例如,一座大楼内或相邻的几座楼之间的互联网络。一个单位、学校内部的网络多为局域网。 14下列关于信息加密的叙述中,正确的是 ( )。 A加密通过加密算法实
8、现 B加 密前的文件称为密文 C加密后的文件称为明文 D将明文变为密文的过程称为解密 A。【解析】一般人们将加密前的文件称为明文,而加密后的文件称为密文,因此加密的目的就是将明文变为密文。而反过来将密文变为明文的过程则称为解密。 15下列关于域名和 IP地址的叙述中,不正确的是 ( )。 A在 Internet 中访问一台主机必须使用它的主机名 B 200 201 202 203是一个 C类 I P 地址 C I P 地址采用的是分层结构 D 主机名与 I P 地址是一一对应的 A。【解析】每台直接连接到 Internet 上的计算机、路由器都必须有唯一的 IP 地址。 IP地址是 Inter
9、net赖以工作的基础。 Internet 中的计算机与路由器的 IP 地址采用分层结构,它是由网络地址与主机地址两部分组成。对于 C类地址,其网络地址空间长度为 21位,主机地址空间长度为 8 位, C类 I P地址范围从:l92 0 0 0 223 255 255 255。主机名与它的 IP 地址一一对应,因此在 Internet 上访问一台主机既可以使用它的主机名,也可以使用它的 I P 地址。 16 Java 语言中。负责并发管理的机制是 ( )。 A垃圾回收 B虚拟机 C代码安全 D多线程 D。【解析】多线程是 Java 程序的并发机制,它能同步共享数据、处理不同的事件。 17下列描述
10、中,错误的是 ( )。 A Java 要求编程者管理内存 B Java 的安全性体现在多个层次上 C Applet 要求在支持 Java 的浏览器上运行 D Java 有多线程机制 A。 【解析】为了充分利用资源, Java 有一个系统级的线程,用来对内存的使用进行跟踪,它可以在系统空闲时对不用的内存空间进行回收,从而使程序员从繁忙的内存管理中解放出来。 18 Java 为移动设备提供的平台是 ( )。 A J2ME B J2SE C J2EE D JDK 5 0 A。【解析】 Java 2 平台包括: J2ME 平台、 J2SE 平台和 J2EE 平台。其中: J2ME 是为嵌入式和移动设备
11、提供的 Java 平台; J2SE 是面向企业级应用与服务的综合性标准开发平台; J2EE 是面向大型 企业级用容器管理专用构件的应用平台。而 JDK 5 0 是一个 Java 开发软件包。 19 JDK 中提供的文档生成器是 ( )。 A javadoc exe B javap exe C java exe D javaprof exe A。【解析】在 JDK 中: javadoc exe 是文档生成器,将 Java 源代码和包以 MML 格式生成 AP 文档; java exe是 Java 解释器; javap exe是 Java 反汇编器; javaprof exe是 Java 剖析工具
12、,提供解 释器剖析信息。 20下列不属于 Swing 中构件的是 ( )。 A JPanel B JTable C Menu D JFrame C。【解析 JPanel 是 Swing 的中间容器; JTable 是 Swing 中可编辑信息的构件; JFrame 是 Swing 的顶层容器。 21 阅读下面程序 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 prin
13、tln(“aa=“+aa); char bb=(char)j; System out println(“bb=“+bb): 如果输出结果的第二行为 bb=a,那么第一行的输出结果是 ( )。 A aa=I B aa=204 C aa=v D aa=156 B。【解析】本题考查的是 Java 的基本数据类型及其运算。程序开始生成了一个字符型变量 a 和 3个整型变量 i、 j、 aa。而整型变量 aa的初始值是 a+i,其中 a是一个字符 型变量。如何进行加法运算呢 ?Java 语言规定, char 型数据可以自动转换成 int 类型,转换的结果就是该字符的 ASCIl 码值。因此,整型变量 a
14、a 的初始值为字符 ”h” 的 ASCIl 码值加上 l00。如果记住 h 的ASCIl 码值是 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。因此,本
15、题的正确答案是 B。 22阅读下面程序 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 (); 用于复
16、合类型数据的 ”= =” 运算符 OperAndExp equalsMethodl(); 程序运行结果是 ( )。 A = = B true C false D equal C。【解析】本题考查的是 Java 语言中运算符的特殊用法。相等比较运算符 “= =“,不仅可用于基本类型的数据之间的比较,还可以用于复合类型数据之间的比较。但是,对于复合类型数据的 “= =“运算,其比较的目标 是两个操作数是否是同一个对象。如果需要比较两个对象的值是否相同,则可以调用 equals()方法。题目中函数 equalsMethodl()的代码非常简单,首先生成两个字符串对象 sl 和 s2,然后输出表达式
17、“sl= =s2“的结果。根据上面介绍的相等比较运算符的用法,字符串对象 sl 和 s2是复合类型数据,因此表达式“sl= =s2“比较的是 sl 和 s2 是否同一个对象。显然, sl和 s2 虽然具有相同的值,即 “how are you“,但它们是两个不同的对象。因此,本题的正确答案是 C。 23阅读下面代码 if(x= =0)System out println(“冠军 “); ) elseif(x一 3)System Out println(“亚军 “); elseSystem out println(“季军 “); 若要求打印字符串 ” 季军 ” ,则变量 X的取值范围是 ( )。
18、 A x=d&xO C x-3 D 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 语言规定构造方法不可以重载
19、D Java 语言规定构造方法只能通过 new 自动调用 C。【解析】本题考查的是构造方法的使用。 Java 语言中,构造方法是一种特殊的方法,是为对象初始化操作编写的方法,用它来定义对象的初始状态。 Java 中的每个类都有构造方法,它也是由方法名、参数和方法体组成的。构造方法有如下特点: 构造方法的名字必须与类名相同。 构造方法不返回任何数据,但不用 void 来声明。 用户不能直接调用构造方法,必须通过关键字 new 自动调用。 构造方法可由用户在类中定义,默认时由 Java 语言自动生成。但它是个空方法,变量被 赋予该数据类型的默认值。 在构造方法实现中,可以进行方法重载,即定义多个构
20、造方法。重载构造方法的目的是使类具有不同的初始值,为类对象的初始化提供方便。根据上述构造方法的特点可知,本题选项 C 的说法是错误的。 25下列适配器类中不属于事件适配器的是 ( )。 A MouseAdapter B KeyAdapter C ComponentAdapter D FrameAdapter D。【解析】本题考查 java awt event 包 中定义的适配器类。该包中定义的适配器类包括 ComponentAdapter构件适配器; ContainerAdapter 容器适配器; FocusAdapter 焦点适配器; MouseAdapter 鼠标适配器; KeyAdapt
21、er 键盘适配器 WindowAdapter 窗口适配器,由此可知本题答案为 D。 26下列类中属于字节输入抽象类的是 ( )。 A FileInputStream B ObjectInputStream C FiterInputStream D InputStream D。【解析】在 Java 中定义了两种类型的流,字节型和字符型,这两种流分别用 4 个抽象类表示:InputStream, OutputStream, Reader, Writer,其中 InptutStream 和 OutStream 表示字节流, Reader 和Reader 是表示字符流,所以字节输入抽象类为 Inptu
22、tStream。 27能向内部直接写入数据的流是 ( )。 A FileOutputStream B FileInputStream C ByteArrayOutputStream D ByteArraylnputStream C。【解析】本题考查 Java 的内存读写。在 java io 中,还提供了 ByteArrayInputStream、ByteArrayoutputStream 和 StringBufferInputStream 类可直接访问内存,它们是 InputStream 和OutputStream 的子类。用 ByteArrayOutputStream 可向字节数组写入数据;
23、 ByteArrayInputStream 可从字节数组 中读取数据。 28下列运算符中属于关系运算符的是 ( )。 A = = B = C + = D - = A。【解析】本题考查 Java 的关系运算符。 B中写法不正确, C、 D 均为赋值运算符。 29下列方法中,声明抛出 InterruptedException 类型异常的方法是 ( )。 A suspend() B resume() C sleep() D start() C。【解析】本题考查线程的基本操作。 Java 中提供了 interrupt 方法用来中断一个线程,当调用一个线程的 interrupt 方法时,即向该线程发送一
24、个中断请求。在调用线程的 interrupt 方法时,如果该线程由于调用了 sleep 方法或 wait 方法而正在处于阻塞状态,那么线程会抛出一个 InterruptException 异常。 30下列关于 System 类的叙述中,错误的是 ( )。 A System 类是一个 final 类 B System 类不能实例化 C System 类中没有定义属性 D System 类主要提供了系统环境参数的访问 C。【解析】本题考查 System 类的基本知识。 Systern 类是一个 final 类,所有的方法都用类变量来调用,对 System 类不可能实例化。 System 类主要用来
25、提供标准输入输出和系统环境信息的访问设置。而 System类的属性有: public static final InputStream in ;标准输入; publicstatic final OutputStream out;标准输出; pubhc static finalPrintStrea m err;标准错误输出。 31 阅读下面程序 public class Increment public static void main(stringargs) int C; c=5: System out println(c); System out println(c+): System ou
26、t println(c); 程序运行结果是 ( )。 A 5 6 6 B 5 5 6 C 6 7 7 D 6 6 6 B。【解析】本题考查的是 Java 增量运算符 “+“。 x+是先使用后加 l,即首先使用 X 的值进行表达式的计算,然后才对 x 的值加 1。而 +x 是先加 1后使用,即首先对 x的值加 1,然后使用 x 的值进行表达式的计算。本题首先生成一个整型变量 C,其初始值为 5。第一条输出语句输出 c 的初始值,即 5。然后,第二条输出表达式 c+的结果,即先输出 C 的值,然后才对 c 的 值加 1,所以,第二条输出语句输出的是 5,输出后 c 的结果才为 6。最后一条输出语句
27、输出结果为 6。因此,本题的正确答案为 B。 32下列叙述中,错误的是 ( )。 A JavaApplication 与 Applet 所用编译命令相同 B通常情况下 JavaApplication 只能有一个 main()方法 C JavaApplet 必须有 HTML 文件才能运行 D JavaApplet 程序的 class 文件可用 Java 命令运行 D。【解析】本题考查的是 Java 中的 Applet 以及 Applet 与 Application 的区别。 Applet 是能够嵌入 HTML语言中,并能够在浏览器中运行的类。 Applet 的运行环境是 Web 浏览器,所以必须
28、建立 HTML 文件,告诉浏览器如何加载与运行 Applet。因为 Applet 是不能直接通过 Java 命令行启动运行的。所以选项 D的说法错误。 33下列关于 Java 语言中线程的叙述中,正确的是 ( )。 A线程由代码、数据、内核状态和一组寄存器组成 B线程间的数据是不共享的 C用户只能通过创建 Thread 类的实例或者定义和创建 Thread 子类的实例,建立和控制自己的线程 D因多线程并发执行而引起的执行顺序的不确定性可能造成执行结果的不确定 D。【解析】本题考查线程的基本知识。线程与进程在概念上是相关的,线程是由表示程序运行状态的寄存器、程序计数器、栈指针以及堆栈组成,它不包
29、含进程地址空间中的代码和数据。代码所操作的数据是 Java线程模型中的一个组成部分,数据与代码是独立的。数 据可以被多个线程共享,也可不共享。 Java 语言中提供两种创建线程的方法,一种是通过继承 Thread类创建线程,另一种是通过实现 Runnable 接口来创建线程。 34处理对象传输的接口是 ( )。 A Serializable B C: loneable C hemListener D ActionListener A。【解析】处理对象传输就是把对象串行化。 Java 语言中,如果要串行化某些类的对象,这些类就必须实现 Serializable 接口。 35在读取二进制数据文件的记录时,为了提高效率常 常使用的一种辅助类是 ( )。 A InputStream B FileInputStream C StringBuffer D BufferedReader C。【解析】本题考查 Java 语言的输入输出流。 InputStream 类、 FilelnputStream 类和 BufferedReader