1、计算机二级 JAVA-18及答案解析(总分:84.98,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:63.00)1.已知 int x=(1,2,3,4);,变量 x的值是U /U。 A.1 B.2 C.3 D.4(分数:2.00)A.B.C.D.2.下列有关线程的叙述哪个是正确的? A.一旦一个线程被创建,它就立即开始运行 B.调用 start( )方法可以使一个线程成为可运行的,但是它不一定立即开始运行 C.主线程不具有默认优先级 D.Java中线程的优先级从低到高以整数 09 表示 (分数:1.00)A.B.C.D.3._复审应该把重点放在系统的总体结构、模块划分、内外接口
2、等方面。 U /U A.详细设计 B.系统设计 C.正式 D.非正式(分数:1.00)A.B.C.D.4.数据结构中,与所使用的计算机无关的是数据的U /U。 A.存储结构 B.物理结构 C.逻辑结构 D.物理和存储结构(分数:2.00)A.B.C.D.5.编译下面源程序会得到文件。class A1class A2 public class Bpublic static void main(String args) A.只有 B.class文件 B.只有 A1.class和 A2.class文件 C.有 A1.class、A2.class 和 B.class文件 D.编译不成功(分数:3.00
3、)A.B.C.D.6.在待排序的元素序列基本有序的前提下,效率最高的排序方法是U /U。 A. 插入排序 B. 选择排序 C. 快速排序 D. 堆排序(分数:1.00)A.B.C.D.7.阅读下面代码public class public static void main(String args) double d=12.3;Decrementer dec=new Decrementer();dec.decrement(d);System.out.println(d);class Decrementer public void decrement(double decMe) decMe=dec
4、Me-1.0;代码执行后输出的结果是 A. 12.3 B. 11.3 C. 13.3 D. -1.0(分数:2.00)A.B.C.D.8.下列说法正确的是U /U。 A.共享数据的所有访问都必须作为临界区 B.用 synchronized保护的共享数据可以是共有的 C.Java中对象加锁不具有可重入性 D.对象锁不能返还(分数:2.00)A.B.C.D.9.下列类中属于字节输入抽象类的是U /U。 A.FileInputStream B.ObjectInputStream C.FiterInputStream D.InputStream(分数:2.00)A.B.C.D.10.有以下程序:voi
5、d sum(int *a) a0=a1; main() int aa10=1,2,3,4,5,6,7,8,9,10,i;for(i=3;i=0;i-=2) sum(aai);printf(“%d/n“,aa0);执行后输出的结果是U /U。 A.4 B.3 C.2 D.1(分数:2.00)A.B.C.D.11.若数组 a定义为 inta=newint34,则 a是U /U。 A.一维数组 B.二维数组 C.三维数组 D.四维数组(分数:2.00)A.B.C.D.12.下列语句输出结果为U /U。public class test/ public static void main (String
6、 args)String s1=new String(“How“);String s2=new String(“How“);Systemoutprintln(!(s1equals(s2); A.false B.true C.0 D.1 (分数:1.00)A.B.C.D.13.编制好的程序,确保它的正确性和可靠性的同时,还应强调良好的编程风格。在书写功能性注解时应考虑U /U。 A. 仅为整个程序做注解 B. 仅为每个模块做注解 C. 为程序段做注解 D. 为每个语句做注解(分数:2.00)A.B.C.D.14.在程序的下画线处应填入的选项是U /U。public class Test_publ
7、ic static void main(String args)Test t=new Test();Thread tt=new Thread(t);tt.start();public void run()for(int i=0;i5;i+)System.out.println(“i=“+i); A.implements Runnable B.extends Thread C.implements Thread D.extends Runnable(分数:2.00)A.B.C.D.15.下列程序的输出结果是U /U。public class Test public static void mai
8、n (String args) String s=“hello“;s.replace (r,m);System.out.println(s); A. hello B. HELLO C. hemmo D. HEMMO(分数:2.00)A.B.C.D.16.当一个 Applet被下载到本地环境时,不发生的操作是U /U。 A.产生一个 Applet主类的实例 B.对 Applet自身进行初始化 C.启动 Applet运行 D.Applet并不显示出来(分数:2.00)A.B.C.D.17.下面程序的输出结果是U /U。main() char *alpha7= “ABCD“,“EFGH“,“IJKL
9、“,“MNOP“,“QRST“,“UVWX“,“YZ“;char *p;int I:p=alpha;for(i=0;i4;i+)printf(“%c“,*(pi);printf(“/n“); A.AEIM B.BFJN C.ABCD D.DHLP(分数:2.00)A.B.C.D.18.有以下程序:void main()char a7=“a0/0a0/0“; inti,j;char *p=a;i=sizeof(p); j=strlen(a);printf(“%d %d/n“,i,j);程序运行后输出的结果是U /U。 A.4 2 B.7 6 C.7 2 D.6 2(分数:2.00)A.B.C.D
10、.19.下列程序的输出结果是public class Test public static void main(String args ) System.out.println(100%3);System.out.println(100%3.0); A.1和 1 B.1和 1.0 C.1.0和 1 D.1.0和 1.0 (分数:1.00)A.B.C.D.20.Component类中用于刷新组件的方法是 A. getFont B. getName C. update D. paint(分数:2.00)A.B.C.D.21.下列说法中,不属于数据模型所描述的内容的是 A. 数据结构 B. 数据操作
11、 C. 数据查询 D. 数据约束 (分数:1.00)A.B.C.D.22.下列不属于逻辑运算符的是U /U。 A.t B.| C.i3;i+) printf(“%d“,xi2-i);的输出结果是U /U。 A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9(分数:2.00)A.B.C.D.28.下列代码段执行结果为U /U。public class Testpublic static void main(String args)System.out.println(“abc“+3+4+5);System.out.println(3+4+5+“abc“); A. 编译出错 B. ab
12、c345 abc345 C. abc和 12 D. abc345和 12abc(分数:2.00)A.B.C.D.29.下列各项说法中错误的是U /U。 A. Swing构件支持双缓冲区,编写程序的时候不需要重写有关的代码 B. AWT构件支持双缓冲区,编写程序的时候不需要重写有关的代码 C. Swing构件支持在按钮构件上同时添加图标和文字 D. AWT构件不支持在按钮构件上添加图标(分数:1.00)A.B.C.D.30.若有定义语句:double x,y,*px,*py;,执行了 px=x;py=y;之后,正确的输入语句是U /U。 A.scanf(“%f%1“,x,y); B.scanf(
13、“%f%f“,x,y); C.scanf(“%1f%1e“,px,py); D.scanf(“%1f%1f“,x,y);(分数:2.00)A.B.C.D.31.Panel和 Applet的默认布局管理器是U /U。 A. CardLayout B. FlowLayout C. BorderLayout D. GridLayout(分数:2.00)A.B.C.D.32.面向对象方法中,继承是指_。 A. 一组对象所具有的相似性质 B. 一个对象具有另一个对象的性质 C. 各对象之间的共同性质 D. 类之间共享属性和操作的机制(分数:2.00)A.B.C.D.33.阅读下列代码后public cl
14、ass Personint arr=new int10;public static void main(String args)Systemout.println(arr1);正确的说法是 A. 编译时将产生错误 B. 编译时正确,运行时将产生错误 C. 输出零 D. 输出空(分数:2.00)A.B.C.D.34.功能用来终止当前循环体语句的执行语句是U /U。 A.if语句 B.if-else语句 C.break语句 D.return语句 (分数:1.00)A.B.C.D.35.Thread类的方法中,toString()方法的作用是 U /U A. 只返回线程的名称 B. 返回当前线程所属
15、的线程组的名称 C. 返回当前线程对象 D. 返回线程的字符串信息(分数:2.00)A.B.C.D.二、B填空题/B(总题数:1,分数:22.00)以下函数的功能是删除字符串 s中的所有数字字符,请填空。viod dele(char *s) int n=0,i;for(i=0;si;i+)if(U U 2 /U /U)sn+=si;sn=U U 3 /U /U;(分数:21.98)填空项 1:_填空项 1:_(3).通过实现 Runnable接口创建线程,请在画线处加入正确的代码完成此程序U U /U /U。public class ThreadTest public static void
16、main(String args ) Thread t1=new Thread(new Hello(); Thread t2=new Thread(new Hello(); _; t2.start(); class Hello implements Runnable int i; public void run() while(true) System.out.println(“Hello“+i+); if(i=5) break; (分数:1.57)填空项 1:_(4).Java程序中定义接口所使用的关键字是_。(分数:1.57)填空项 1:_(5).我们在 Java程序中把关键字 _ 加到方
17、法名称的前面,来实现子类调用父类的方法。(分数:1.57)填空项 1:_(6).请阅读下列程序代码,然后将程序的执行结果补充完整。 程序代码: public class throwsException static void Proc(int sel) throws ArithmeticException,ArrayIndexOutOfBoundsException Systemout. println(“In Situation“+sel);if(sel=0) Systemoutprintln(“no Exception caught“); return; else if(sel=1) in
18、t iArray=new int4; iArray1=3; public static void main(String args) try Proc(0);Proc(1); catch(ArrayIndexOutOfBoundsException e) Systemoutprintln(“Catch“+e); finally Systemoutprintln(“in Proc finally“); 执行结果: In Situation 0 no Exception caught _ in Proc finally(分数:1.57)填空项 1:_(7).AWT中的布局管理器包括 BorderL
19、ayout、_、CardLayout、GridBagLayout 和 GridLayout。(分数:1.57)填空项 1:_(8).抽象、封装、_和多态是 Java语言的四大特性。(分数:1.57)填空项 1:_(9).在面向对象的程序设计中,类描述的是具有相似性质的一组 _。(分数:1.57)填空项 1:_(10).在一个类的内部嵌套定义的类称为U U /U /U。(分数:1.57)填空项 1:_(11).求自然数 1到 n的和的递归定义如下: sum(1)=1 若 n=1 sum(n)=sum(n-1)+n; 若 n1 下列定义的方法的功能是用递归的算法完成自然数 1到 n的累加和,请补充
20、程序。 int sum (int num if( num = =1)return1; else returnU 【9】 /U (分数:1.57)填空项 1:_(12).若有以下程序: main() int a=4,b=5,c=3,t=0; if(ab)t=a;a=b;b=t; if(ac)t=a;a=c;c=t; printf(“ %d %d %d/n“,a,b,c); 执行后输出的结果为_。(分数:1.57)填空项 1:_(13).在 Java新的 I/O功能中,通过文件锁定来实现多个线程的U U /U /U,避免了可能存在的安全隐患。(分数:1.57)填空项 1:_(14).FileInp
21、utStream是字节流,BufferedWriter 是字符流,ObjectOutputStream 是_。(分数:1.57)填空项 1:_计算机二级 JAVA-18答案解析(总分:84.98,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:63.00)1.已知 int x=(1,2,3,4);,变量 x的值是U /U。 A.1 B.2 C.3 D.4(分数:2.00)A.B.C.D. 解析:2.下列有关线程的叙述哪个是正确的? A.一旦一个线程被创建,它就立即开始运行 B.调用 start( )方法可以使一个线程成为可运行的,但是它不一定立即开始运行 C.主线程不具有默认优先级
22、 D.Java中线程的优先级从低到高以整数 09 表示 (分数:1.00)A.B. C.D.解析:解析:一个新创建的线程并不是自动开始运行的,必须调用它的 start( )方法使之将线程放入可运行态。不同优先级的线程间是抢先式的,而同级线程间是轮转式的。主线程具有默认优先级。Java 中线程的优先级从低到高以整数 1-10表示,分 10级。3._复审应该把重点放在系统的总体结构、模块划分、内外接口等方面。 U /U A.详细设计 B.系统设计 C.正式 D.非正式(分数:1.00)A.B. C.D.解析:4.数据结构中,与所使用的计算机无关的是数据的U /U。 A.存储结构 B.物理结构 C.
23、逻辑结构 D.物理和存储结构(分数:2.00)A.B.C. D.解析:解析 数据的一种逻辑结构可以对应多种存储结构,数据的存储结构可以是顺序存储结构也可以是链式存储结构。数据的逻辑结构与计算机无关,只是抽象地反映数据元素之间的逻辑关系。5.编译下面源程序会得到文件。class A1class A2 public class Bpublic static void main(String args) A.只有 B.class文件 B.只有 A1.class和 A2.class文件 C.有 A1.class、A2.class 和 B.class文件 D.编译不成功(分数:3.00)A.B.C. D
24、.解析:解析 Java 语言一个源程序可以含有多个类,每个类编译都生成一个字节码文件。因此这里有 3个类,应该有 3个字节码文件。6.在待排序的元素序列基本有序的前提下,效率最高的排序方法是U /U。 A. 插入排序 B. 选择排序 C. 快速排序 D. 堆排序(分数:1.00)A. B.C.D.解析:解析 插入排序通过数据元素的交换来逐步消除线性表中的逆序,所以关键字比较的次数与记录的初始排列次序有关,在待排序的元素序列基本有序的前提下,效率最高。而选择排序和堆排序的关键字比较的次数与记录的初始排列次序无关。快速排序虽然与记录的初始排列次序有关,但在待排序的元素序列基本有序的前提下,效率低于
25、插入排序。7.阅读下面代码public class public static void main(String args) double d=12.3;Decrementer dec=new Decrementer();dec.decrement(d);System.out.println(d);class Decrementer public void decrement(double decMe) decMe=decMe-1.0;代码执行后输出的结果是 A. 12.3 B. 11.3 C. 13.3 D. -1.0(分数:2.00)A. B.C.D.解析:解析 Java 中的方法的参数传
26、递是传值调用,而不是地址调用,因此方法不能改变 d的值,但是改变了参数变量 decMe的值。8.下列说法正确的是U /U。 A.共享数据的所有访问都必须作为临界区 B.用 synchronized保护的共享数据可以是共有的 C.Java中对象加锁不具有可重入性 D.对象锁不能返还(分数:2.00)A. B.C.D.解析:解析 本题考查对象加锁的相关概念。对于对象加锁的使用有些注意事项。对象的锁在某些情况下可以由持有线程返还,比如当 synchronized语句块执行完成后:当在 synchronized语句块中出现异常;当持有锁的线程调用该对象的 wait()方法,由此可见选项 D说法错误。共
27、享数据的所有访问都必须作为临界区,使用 synchronized进行加锁控制,选项 A况法正确。用 synchronized保护的共享数据必须是私有的,选项 B说法错误。Java 中对象加锁具有可重入性,选项 C错误。9.下列类中属于字节输入抽象类的是U /U。 A.FileInputStream B.ObjectInputStream C.FiterInputStream D.InputStream(分数:2.00)A.B.C.D. 解析:解析 在 Java中定义了两种类型的流,字节型和字符型,这两种流分别用 4个抽象类表示:InputStrearm,OutputStream,Reader,
28、Writer,其中 InptutStream和 OutStream表示字节流,Reader和 Reader是表示字符流,所以字节输入抽象类为 InptutStream。10.有以下程序:void sum(int *a) a0=a1; main() int aa10=1,2,3,4,5,6,7,8,9,10,i;for(i=3;i=0;i-=2) sum(aai);printf(“%d/n“,aa0);执行后输出的结果是U /U。 A.4 B.3 C.2 D.1(分数:2.00)A.B.C.D. 解析:11.若数组 a定义为 inta=newint34,则 a是U /U。 A.一维数组 B.二维
29、数组 C.三维数组 D.四维数组(分数:2.00)A.B. C.D.解析:解析 二维数组有两种定义方式:typearrayName;typearrayName;从题目中的语句可以看出,本题定义了一个二维数组。12.下列语句输出结果为U /U。public class test/ public static void main (String args)String s1=new String(“How“);String s2=new String(“How“);Systemoutprintln(!(s1equals(s2); A.false B.true C.0 D.1 (分数:1.00)A.
30、 B.C.D.解析:13.编制好的程序,确保它的正确性和可靠性的同时,还应强调良好的编程风格。在书写功能性注解时应考虑U /U。 A. 仅为整个程序做注解 B. 仅为每个模块做注解 C. 为程序段做注解 D. 为每个语句做注解(分数:2.00)A.B.C. D.解析:解析 首先应该知道功能性注释是嵌在源程序体中的,用以描述其后的语句或程序段是在做什么工作,或是执行了下面的语句会怎么样。所以它描述的是一段程序,而不是每条语句,是为程序段做注解。14.在程序的下画线处应填入的选项是U /U。public class Test_public static void main(String args)
31、Test t=new Test();Thread tt=new Thread(t);tt.start();public void run()for(int i=0;i5;i+)System.out.println(“i=“+i); A.implements Runnable B.extends Thread C.implements Thread D.extends Runnable(分数:2.00)A. B.C.D.解析:解析 Test 类实现了 Runnable接口。15.下列程序的输出结果是U /U。public class Test public static void main (S
32、tring args) String s=“hello“;s.replace (r,m);System.out.println(s); A. hello B. HELLO C. hemmo D. HEMMO(分数:2.00)A. B.C.D.解析:解析 String 类的 replace (char oldChar,char newChar)函数的作用是返回一个新的字符串,它是通过用 newChar替换此字符串中出现的所有 oldChar而生成的。返回的是新字符串,但是原字符串变量的值并未发生改变。因此,输出的是“hello”而不是“hemmo”。如果替换语句换为: s=s.replace(l
33、,m);,则输出“hemmo”。16.当一个 Applet被下载到本地环境时,不发生的操作是U /U。 A.产生一个 Applet主类的实例 B.对 Applet自身进行初始化 C.启动 Applet运行 D.Applet并不显示出来(分数:2.00)A.B.C.D. 解析:解析 本题考查 Applet的加载。当一个 Applet下载到本地系统时,将发生以下操作:产生一个Applet主类的实例;对 Applet自身进行初始化;启动 Applet运行,将 Applet完全显示出来。由此可见,选项 D说法符合题意。17.下面程序的输出结果是U /U。main() char *alpha7= “AB
34、CD“,“EFGH“,“IJKL“,“MNOP“,“QRST“,“UVWX“,“YZ“;char *p;int I:p=alpha;for(i=0;i4;i+)printf(“%c“,*(pi);printf(“/n“); A.AEIM B.BFJN C.ABCD D.DHLP(分数:2.00)A. B.C.D.解析:18.有以下程序:void main()char a7=“a0/0a0/0“; inti,j;char *p=a;i=sizeof(p); j=strlen(a);printf(“%d %d/n“,i,j);程序运行后输出的结果是U /U。 A.4 2 B.7 6 C.7 2 D
35、.6 2(分数:2.00)A. B.C.D.解析:19.下列程序的输出结果是public class Test public static void main(String args ) System.out.println(100%3);System.out.println(100%3.0); A.1和 1 B.1和 1.0 C.1.0和 1 D.1.0和 1.0 (分数:1.00)A.B.C.D. 解析:解析:二元算术运算符适用于所有数值型数据类型,包括整型和浮点型。 但要注意,如果操作数全为整型,那么,只要其中有一个为 long型,则表达式结果也为 long 型;其他情况下,即使两个操作
36、数全是 byte型或 shat型,表达式结果也 int型;如果操 作数为浮点型,那么其中有一个为 double型,表达式结果就是 double型,只有两个操作数 全是 float型或其中一个是 float型而另外一个是整型型时,表达式结果才是 float型。20.Component类中用于刷新组件的方法是 A. getFont B. getName C. update D. paint(分数:2.00)A.B.C. D.解析:21.下列说法中,不属于数据模型所描述的内容的是 A. 数据结构 B. 数据操作 C. 数据查询 D. 数据约束 (分数:1.00)A.B.C. D.解析:解析:数据模型
37、所描述的内容有 3个部分,它们是数据结构、数据操作和效据约束。其中,数据模型中的数据结构主要描述数据的类型,内容、性质,以及数据库的联系等;数据操作主要是描述在相应数据结构上的操作类型与操作方式。22.下列不属于逻辑运算符的是U /U。 A.t B.| C.i3;i+) printf(“%d“,xi2-i);的输出结果是U /U。 A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9(分数:2.00)A.B.C. D.解析:28.下列代码段执行结果为U /U。public class Testpublic static void main(String args)System.out
38、.println(“abc“+3+4+5);System.out.println(3+4+5+“abc“); A. 编译出错 B. abc345 abc345 C. abc和 12 D. abc345和 12abc(分数:2.00)A.B.C.D. 解析:解析 Java 语言对“+”运算符进行了扩展,使它能够进行字符串的连接。但是一般来说,如果“+”运算符的第一个操作数是字符串,则 Java系统会自动将后续的操作数类型转换成为字符串类型,然后再进行连接;如果“+”运算符的第一个操作数不是字符串,则运算结果由后续的操作数决定。29.下列各项说法中错误的是U /U。 A. Swing构件支持双缓冲
39、区,编写程序的时候不需要重写有关的代码 B. AWT构件支持双缓冲区,编写程序的时候不需要重写有关的代码 C. Swing构件支持在按钮构件上同时添加图标和文字 D. AWT构件不支持在按钮构件上添加图标(分数:1.00)A.B. C.D.解析:解析 Swing 构件支持双缓冲区, JComponent 构件默认双缓冲区,但是 AWT构件不支持,需要重写代码。30.若有定义语句:double x,y,*px,*py;,执行了 px=x;py=y;之后,正确的输入语句是U /U。 A.scanf(“%f%1“,x,y); B.scanf(“%f%f“,x,y); C.scanf(“%1f%1e“
40、,px,py); D.scanf(“%1f%1f“,x,y);(分数:2.00)A.B.C. D.解析:31.Panel和 Applet的默认布局管理器是U /U。 A. CardLayout B. FlowLayout C. BorderLayout D. GridLayout(分数:2.00)A.B. C.D.解析:解析 容器可以通过选择不同的布局管理器来决定布局。布局管理器主要包括流布局管理器(Flow Layout)、边框布局管理器(Border Layout)、网格布局管理器(Grid Layout)、卡片布局管理器(Card Layout)、网格包布局管理器(GridBagLayo
41、ut)。Panel 和 Applet的默认布局管理器是 FlowLayout。32.面向对象方法中,继承是指_。 A. 一组对象所具有的相似性质 B. 一个对象具有另一个对象的性质 C. 各对象之间的共同性质 D. 类之间共享属性和操作的机制(分数:2.00)A.B.C.D. 解析:解析:面向对象方法中,继承是指新类从已有类那里得到已有的特性。由此定义得到正确答案为D。33.阅读下列代码后public class Personint arr=new int10;public static void main(String args)Systemout.println(arr1);正确的说法是
42、A. 编译时将产生错误 B. 编译时正确,运行时将产生错误 C. 输出零 D. 输出空(分数:2.00)A. B.C.D.解析:解析 本题考查考生对 Java中数组的定义及使用。int arr=new int10表示数组 arr 是一个含有 10个元素的整数数组。Java 中的数据类型必须实例化后才能使用,但是有种情况例外,就是该成员是用 static声明的。题目中对于数组并没有实例化,因此不能使用,所以选项 A说法正确。如果加上static修饰符,改为 static int arr=new int10或者将该数组实例化即可,输出为 0。34.功能用来终止当前循环体语句的执行语句是U /U。
43、A.if语句 B.if-else语句 C.break语句 D.return语句 (分数:1.00)A.B.C. D.解析:35.Thread类的方法中,toString()方法的作用是 U /U A. 只返回线程的名称 B. 返回当前线程所属的线程组的名称 C. 返回当前线程对象 D. 返回线程的字符串信息(分数:2.00)A.B.C.D. 解析:解析 Thread 类的 toString()方法返回线程的字符串信息,包括线程的名字、优先级和线程组。二、B填空题/B(总题数:1,分数:22.00)以下函数的功能是删除字符串 s中的所有数字字符,请填空。viod dele(char *s) int n=0,i;for(i=0;si;i+)if(U U 2 /U /U)sn+=si;sn=U U 3 /U /U;(分数:21.98)填空项 1:_ (正确答案:si0|si9或 !(*(s+i)=0*(s+i)=9)解析:填空项 1:_ (正确答案:/0或 0或 NULL)解析:(3).通过实现 Runnable接口创建线程,请在画线处加入正确的代码完成此程序U U /U /U。public class ThreadTest public static void main(String ar