计算机等级考试二级Java练习题及解析(7)
1 下列关于栈的描述中错误的是___B___。
A、栈是先进后出的线性表 B、栈只能顺序存储 C、栈具有记忆作用
D、对栈的插入与删除操作中,不需要改变栈底指针
解析:栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈又称先进后出表(FILO-First In Last Out)。线性表可以顺序存储,也可以链式存储,而栈是一种线性表,也可以采用链式存储结构。
2 对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是___D___。
A、冒泡排序为n/2 B、冒泡排序为n C、快速排序为n D、快速排序为n(n-1)/2
解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。
3 对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为__C____。
A、 B、n/2 C、n D、n+1
4 在进行顺序查找过程中,如果线性表中的第一个元素就是被查找元素,则只需做一次比较就查找成功,查找效率最高;但如果被查找的元素是线性表中的最后一个元素,或者被查找的元素根本就不在线性表中,则为了查找这个元素需要与线性表中所有的元素进行比较,这是顺序查找的最坏情况。所以对长度为n的线性表进行顺序查找,在最坏情况下需要比较n次。
5 模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
6 计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。软件具有以下特点:①软件是一种逻辑实体,而不是物理实体,具有抽象性;②软件的生产过程与硬件不同,它没有明显的制作过程;③软件在运行、使用期间不存在磨损、老化问题;④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致软件移植的问题;⑤软件复杂性高,成本昂贵;⑥软件开发涉及诸多的社会因素。
7 数据独立性是数据库技术的重要特点之一。所谓数据独立性是指__D____。
A、数据与程序独立存放 B、不同的数据被存放在不同的文件中
C、不同的数据只能被对应的应用程序所使用 D、以上三种说法都不对
解析:数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。选项A、B、C三种说法都是错误的。
8 在读字符文件Employee.dat时,使用该文件作为参数的类是___D___。
A、BufferedReader B、DataInputStream C、DataOutputStream D、FileInputStream
解析:本题考查的是文件和文件I/O。
BufferedReader用来从字符输入流中读取并缓冲字符,以提高读取字符(或字符数组)的效率。其构造方法为:
public BufferedReader(Reader in)
public BufferedReader(Reader in, int sz)
DataInputStream用来以独立于机器的方式从潜在的输入流中读取Java基本数据类型。构造方法为:
DataInputStream(InputStream in)
FileInputStream用来从文件中读取字节。构造方法为:
FileInputStream(String name)
FileInputStream(File file)
char类型的取值范围是___B___。
A、2-7~27-1 B、0~216-1 C、-215~215-1 D、0~28-1
9 能够支持javadoc命令的注释语句是______。
A、/**...// B、/*...*/ C、// D、/**...*/
解析:Java的单行注释符为//,多行注释符有/*...*/和/**...*/(javadoc能够利用该注释符自动生成帮助文档)。
10 下列不是InputStream子类的是__C____。
A、文件输入流FileInputStream B、对象输入流ObjectInputStream
C、字符输入流CharInputStream D、压缩文件输入流ZipInputStream
11 Java中没有CharInputStream流。
下列方法中可以用来创建一个新线程的是___C___。
A、实现java.lang.Runnable接口并重写start()方法
B、实现java.lang.Runnable接口并重写run()方法
C、继承java.lang.Thread类并重写run()方法
D、继承java.lang.Thread类并重写start()方法
解析:java.lang中的Thread类的典型构造方法为:
public Thread(ThreadGroup group,Runnable target,String name)
接口Runnable定义了run()方法;而Thread类本身也实现了Runnable接口,故创建线程有两种方法:
1、用实现Runnable接口的类的实例作target参数生成Thread类的实例
2、编写继承Thread类的类,并重写(override)run()方法
12 下列关于线程优先级的说法中,正确的是__C____。
A、线程的优先级是不能改变的 B、线程的优先级是在创建线程时设置的
C、在创建线程后的任何时候都可以设置 D、B和C
解析:Java语言中线程的优先级是用一个介于MIN_PRIORITY 和MAX_PRIORITY之间的整数来表示的。可以在创建线程后的任何时候修改线程的优先级。
13 下列代码中,将引起一个编译错误的行是__D____。
1)public class Test{
2) int m,n;
3) public Test(){}
4) public Test(int a){m=a;}
5) public static void main(String args[]){
6) Test t1,t2;
7) int j,k;
8) j=0;k=0;
9) t1=new Test();
10) t2=new Test(j,k);
11) }
12) }
A、第3行 B、第5行 C、第6行 D、第10行
解析:第10行代码中的参数数目比类Test的任何一个构造方法声明的形参都多,因此引起编译错误。
14 阅读下列代码后
public class Person{
int arr[]=new int[10];
public static void main(String args[]){
System.out.println(arr[1]);
}
}
15 正确的说法是__A____。
A、编译时将产生错误 B、编译时正确,运行时将产生错误 C、输出为零 D、输出为空
解析:由于数组arr声明时未用static关键字,而main()方法直接引用arr(而非通过Person的实例引用),将产生"非静态变量不能从静态上下文中引用"(non-static variable cannot be referenced from a static context)的编译错误。
16 某二叉树中度为2的结点有18个,则该二叉树中有 19 个叶子结点。
解析:二叉树的性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
17 问题处理方案的正确而完整的描述称为 算法 。
18 线程在生命周期中要经历5种状态,分别是新建状态、可运行状态、运行状态、___阻塞 或 Blocked___状态和终止状态。
19 请阅读下列程序代码,然后将程序的执行结果补充完整。
程序代码:
class throwsException
{
static void Proc(int sel) throws ArithmeticException,ArrayIndexOutOfBoundsException
{
System.out.println("In Situation"+sel);
if(sel==0){
System.out.println("no Exception caught");
return;
}
else if(sel==1){
int iArray[]=new int[4];
iArray[1]=3;
}
}
public static void main(String[] args)
{
try{
Proc(0);
Proc(1);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Catch"+e);
}finally{
System.out.println("in Proc finally");
}
}
}
执行结果:
In Situation0
no Exception caught
__In Situation1____
in Proc finally
解析:调用Proc(1)时,执行语句System.out.println("In Situation"+sel);控制台输出In Situation1。然后在if语句中执行sel==1分支,该分支中无任何输出语句。
当使用Thread t=new Thread(r)创建一个线程时,表达式:r instanceof Thread的值是___false___。
表达式:r instanceof Thread的语义即"r是否为Thread的实例(instance)"。再看Thread的构造方法(Thread有许多构造方法,以下是最典型的构造方法,其它构造方法都是从下面的构造方法中"减掉"一些参数形成的):
Thread(ThreadGroup group, Runnable target, String name)
可见,Thread构造方法中没有类型为Thread的参数,故r不可能是Thread的实例
20 面向对象的语言将客观世界都看成由各种对象组成。具有共同特征和行为的对象组成类,类是变量和___操作___的集合体。
21 Random类中的nextInt(N)方法得到一个介于0至N-1之间的随机数,而平常用到的Math.random()是得到一个介于0与1之间的小数。