【计算机二级Java语言】卷011

选择题

公共知识

【1】下列叙述中正确的是()。
〖A〗一个算法的空间复杂度大, 则其时间复杂度也必定大
〖B〗一个算法的空间复杂度大, 则其时间复杂度必定小
〖C〗一个算法的时间复杂度大, 则其空间复杂度必定小
〖D〗算法的时间复杂度与空间复杂度没有直接关系
算法的空间复杂度是指算法在执行过程中所需要的内存空间, 算法的时间复杂度, 是指执行算法所需要的计算工作量, 两者之间并没有直接关系, 答案为D。
【2】下列叙述中正确的是()。
〖A〗循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
〖B〗循环队列中的元素个数随队头指针的变化而动态变化
〖C〗循环队列中的元素个数随队尾指针的变化而动态变化
〖D〗以上说法都不对
在循环队列中, 用队尾指针rear指向队列中的队尾元素, 用排头指针front指向排头元素的前一个位置。
因此, 从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。
所以循环队列中的元素个数与队头指针和队尾指针的变化而变化, A正确。
【3】一棵二叉树中共有80个叶子结点与70个度为1的结点, 则该二叉树中的总结点数为()。
〖A〗219
〖B〗229
〖C〗230
〖D〗231
二叉树中, 度为0的节点数等于度为2的节点数加1, 即n2 = n0 - 1, 叶子节点即度为0, 则n2 = 79, 总结点数为n0 + n1 + n2 = 80 + 70 + 79 = 229, 答案为B。
【4】对长度为10的线性表进行冒泡排序, 最坏情况下需要比较的次数为()。
〖A〗9
〖B〗10
〖C〗45
〖D〗90
冒泡法是在扫描过程中逐次比较相邻两个元素的大小, 最坏的情况是每次比较都要将相邻的两个元素互换, 需要互换的次数为9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 45, 选C。
【5】构成计算机软件的是()。
〖A〗源代码
〖B〗程序和数据
〖C〗程序和文档
〖D〗程序、数据及相关文档
软件指的是计算机系统中与硬件相互依赖的另一部分, 包括程序、数据和有关的文档, 选D。
【6】软件生命周期可分为定义阶段、开发阶段和维护阶段, 下面不属于开发阶段任务的是()。
〖A〗测试
〖B〗设计
〖C〗可行性研究
〖D〗实现
开发阶段包括分析、设计和实施两类任务。
其中分析、设计包括需求分析、总体设计和详细设计3个阶段, 实施则包括编码和测试两个阶段, C不属于开发阶段。
【7】下面不能作为结构化方法软件需求分析工具的是()。
〖A〗系统结构图
〖B〗数据字典(D - D)
〖C〗数据流程图(DFD图)
〖D〗判定表
结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。
【8】在关系模型中, 每一个二维表称为一个()。
〖A〗关系
〖B〗属性
〖C〗元组
〖D〗主码(键)
关系模型采用二维表来表示, 即每个二维表称为一个关系。
【9】若实体A和B是一对多的联系, 实体B和C是一对一的联系, 则实体A和C的联系是()。
〖A〗一对一
〖B〗一对多
〖C〗多对一
〖D〗多对多
A和B为一对多的联系, 则对于A中的每一个实体, B中有多个实体与之联系, 而B与C为一对一联系, 则对于B中的每一个实体, C中之多有一个实体与之联系, 则可推出对于A中的每一个实体, C中有多个实体与联系, 所以为一对多联系。
【10】有三个关系R, S和T如下:

则由关系R和S得到关系T的操作是()。
〖A〗选择
〖B〗投影
〖C〗
〖D〗
关系T中的元素与关系R和关系S中不同元素的总和, 因此为并操作。

专业知识

【11】Java语言与C++语言相比, 独有的特点是
〖A〗面向对象
〖B〗解释型与平台无关性
〖C〗有丰富的类库支持
〖D〗高性能
本题考查Java语言的特性.Java语言与C++语言都是面向对象的语言。
因此, 选项A是错误的。
Java语言和C++语言中都包含有类库, 提供了大量的类以满足用户的多方面需要。
因此, 选项C是错误的。
Java语言与C++语言都是高性能的编程语言。
本题答案为B。
【12】在下列程序中, 标识符的定义合法但不符合命名约定的是
1 public class ID_Test2 {
    2 int I = 0;
    3 char str = 's';
    4 char abc = 'c';
    5 double _dou = 3.14;
    6 public static void main(String[] args) {
        7 ID_Test2 t = new ID_Test2();
        8 System.out.println("I= " + t.I);
        9 System.out.println("abc= " + t.abc);
        10 System.out.println("_dou= " + t._dou);
        11
    }
    12
}
〖A〗第2和3行
〖B〗第2行、第4行和第5行
〖C〗第3行和第5行
〖D〗第2行和第5行
本题考查java的命名规范。

根据驼峰命名法规则, 变量名如果只有一个单词则小写。
开头不能用下划线。
选项D正确, 本题答案为D。

【13】下列选项中, 不是Java基本数据类型的是
〖A〗long
〖B〗double
〖C〗unsigned
〖D〗byte
Java语言提供了八种基本类型。
六种数字类型(四个整数型, 两个浮点型), 一种字符类型, 还有一种布尔型。
1、整数:包括int, short, byte, long 2、浮点型:float, double 3、字符:char 4、布尔:boolean

选项C正确, 本题答案为C。

【14】若想判断一个整数是否为偶数, 需要用到的运算符是
〖A〗%
〖B〗+
〖C〗-
〖D〗=
本题考查Java 的运算符。
%为取余运算符可以判断一个数是否为偶数。
选项A正确, 本题答案为A
【15】若已有下列定义, 则值为4的表达式是
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
char c = 'a', d, g;
〖A〗a[g - c]
〖B〗a[4]
〖C〗a['d' - 'c']
〖D〗a['d' - c]
数值4也就是这个定义数组的第四个数

也就是a[3] char c = 'a', 而'a'代表了ASCLL码, 表示的是十进制的97, 那么c = 97。

而'd'也表示的是ASCLL码, 意味着十进制的100。

所以'd' - c = 100 - 97 = 3

所以就有了4的表达式为a['d' - c]。
选项D正确, 本题答案为D。

【16】下列代码段执行后, n 的值为
int n = 0;
char k = 'a';
switch (k) {
    case 'a':
        n++;
    case 'b':
        n += 2;
        break;
    case 'c':
        n += 3;
        break;
}
〖A〗0
〖B〗1
〖C〗3
〖D〗6
switch case语句, 当里面判断执行完后需要加入break; 以退出选择, 否则将一直继续往下执行到结束。
所以 case 'a': n++; 结果为1, 继续往下运行case 'b' : n += 2; break; 结果为3.有break关键字, 结束运行。
选项C正确, 本题答案为C。
【17】下列选项中, 不能正确表示无限循环的是
〖A〗for (; ; );
〖B〗while (true);
〖C〗while (1 == 1);
〖D〗do { …… } while (0);
本题考查循环语句的语法。

do while循环结构 while括号里应该是一个布尔表达式, 不能为0。
选项D正确, 本题答案为D。

【18】下列代码段执行后, sum 的值为
int sum = 0;
for (int i = 1; i < 10; i = i + 2)
    if (i / 4 == 1)
        sum += i;
〖A〗4
〖B〗15
〖C〗25
〖D〗12
本题考查for循环的执行过程。

For循环执行顺序是:初始化--判断--函数体——然后for循环的第3句--判断——函数体-- - for循环的第三句--判断……选项D正确, 本题答案为D。

【19】下列代码段执行后, count 的值为
int count = 0;
for (int i = 0; i < 5; i++) {
    for (int j = 1; j <= 5; j++)
        count++;
}
〖A〗4
〖B〗6
〖C〗16
〖D〗25
本题考查双层for循环结构, 内层循环5次, 每次count + 1, 外层循环5次, 每次count + 1, 共循环25次。
选项D正确, 本题答案为D。
.
【20】下列代码段执行后的结果是
int i = 0;
int x = 0;
int[] num = { 1, 2, 3, 4, 5 };
while (++i < 4) {
    System.out.print(" " + num[++x]);
}
〖A〗1 2 3 4 5
〖B〗2 3 4 5
〖C〗1 2 3 4
〖D〗2 3 4
本题考查的是while循环和数组

数组下标从0开始, 选项D正确, 本题答案为D。

【21】数组中各个元素的数据类型是
〖A〗相同的
〖B〗不同的
〖C〗部分相同的
〖D〗任意的
本题考查数组的相关知识。

数组是同种数据类型的集合, 所以数组中各个元素的数据类型必须是相同的。
选项A正确, 本题答案为A。

【22】关于下列代码的说法中, 正确的是
public class Manager {
    static String name[] = new String[10];
    public static void main(String args[]) {
        System.out.println(name[9]);
    }
}
〖A〗编译时将产生错误
〖B〗编译时正确, 运行时将产生错误
〖C〗输出0
〖D〗输出为null
本题考查数组的相关知识。

String类型的数组, 默认值为null。
选项D正确, 本题答案为D。

【23】执行下列代码的第10行语句时, 所调用的方法是
1 class Employer {
    2 public void promote(int i, int j) {
        ...
    }
    3 public void promote(int i) {
        ...
    }
    4
}
5 public class Manager extends Employer {
    6 public void promote() {
        ...
    }
    7 public void promote(int i) {
        ...
    }
    8 public static void main(String args[]) {
        9 Employer e = new Employer();
        10 e.promote(99, 100);
        11
    }
    12
}
〖A〗第2行定义的方法
〖B〗第3行定义的方法
〖C〗第6行定义的方法
〖D〗第7行定义的方法
本题考查方法的调用。

第10行的的方法有两个参数, 即调用第二行的方法。
选项A正确, 本题答案为A。

【24】接口中, 除了抽象方法之外, 还可以含有的是
〖A〗变量
〖B〗常量
〖C〗成员方法
〖D〗构造方法
接口只提供抽象方法, 但并不提供对其的实现, 并且方法默认都是公有的, 而提供实例字段和方法实现是继承接口类的任务, 所以接口中没有成员方法和构造方法。
接口中还可以定义常量, 但不能定义变量。
选项B正确, 本题答案为B。
【25】下列代码中构造方法的返回类型是
public class City {
    public static void main(String args[]) {
        City c = new City();
    }
    City() {
        System.out.println("Working in City");
    }
}
〖A〗null
〖B〗integer
〖C〗String
〖D〗
本题考查Java面向对象的知识。

构造方法中没有返回值。
选项D正确, 本题答案为D。

【26】下列代码的运行结果是
public class ExceptionsHandling {
    static void test(int i) throws ArithmeticException, ArrayIndexOutOfBoundsException {
        if (i == 0) {
            System.out.println("Everything is OK");
            return ;
        } else if (i == 1) {
            int myArray[] = new int[4];
            myArray[1] = 3;
        }
    }
    public static void main(String args[]) {
        try {
            test(0);
            test(1);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("catch " + e);
        } finally {
            System.out.println("test over");
        }
    }
}
〖A〗Everything is OK
〖B〗Everything is OK catch java.lang.ArrayIndexOutOfBoundsException : 4 test over
〖C〗test over
〖D〗Everything is OK test over
本题考查if判断语句及异常处理。
输入0满足if 中i == 0, 执行里面语句块, finally代码块在处理异常时无论有没有异常都会执行里面的语句块, 选项D正确, 本题答案为D。
【27】下列代码的运行结果是
public class ChangeValue {
    String name;
    public static void main(String args[]) {
        double d;
        ChangeValue cv = new ChangeValue();
        d = 100.0;
        System.out.println("double is:" + d);
        cv.changeDouble(d);
        System.out.println("changed double is:" + d);
        cv.name = "Java";
        System.out.println("name is:" + cv.name);
        cv.changeName(cv);
        System.out.println("changed name is:" + cv.name);
    }
    public void changeDouble(double d) {
        d = 200.0;
    }
    public void changeName(ChangeValue c) {
        c.name = "Android";
    }
}
〖A〗double is : 100.0 changed double is : 200.0 name is : Java
〖B〗double is : 100.0 changed double is : 100.0 name is : Java
〖C〗double is : 100.0 changed double is : 200.0 name is : Java changed name is : Java
〖D〗double is : 100.0 changed double is : 100.0 name is : Java changed name is : Android
本题考查方法的调用。
根据方法调用的顺序, 选项D正确, 本题答案为D。
【28】下列代码的运行结果是
public class StringTest {
    public static void main(String args[]) {
        char chars[] = { 'J', 'a', 'v', 'a', 'l', 'a', 'n', 'g', 'u', 'a', 'g', 'e' };
        String s = new String(chars);
        String s1 = s.concat("and");
        System.out.println(s1);
    }
}
〖A〗Javalanguage
〖B〗Javalanguageand
〖C〗and Javalanguage
〖D〗and
本题考查String类的concat方法的使用。

Concat:将指定字符串连接到此字符串的结尾。
选项B正确, 本题答案为B。

【29】下列说法中错误的是
〖A〗CharArrayReader和ByteArrayInputStream都是从内存读数据
〖B〗CharArrayReader是将一个字节数组作为其返回数据的字节输入流
〖C〗ByteArrayInputStream是带缓冲区的输入流
〖D〗FilterReader是一个抽象类
与 ByteArrayInputStream 对应此类实现一个可用作字符输入流的字符缓冲区, 选项B不满足条件, 本题答案为B CharArrayReader 是一个把字符数组作为源的输入流的实现。
所以本题答案为B。
【30】下列代码实现了以对象流方式向score.txt文件写入数据的功能。下划线处应填入的代码是
import java.io.*;
public class testOut {
    public static void main(String[] args) {
        int[] data = new int[3];
        data[0] = 100;
        data[1] = 95;
        data[2] = 80;
        try {
            ObjectOutputStream out = new _______________(new FileOutputStream("score.txt"));
            out.writeObject(data);
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
〖A〗ObjectOutputStream
〖B〗FileOutputStream
〖C〗FileWriter
〖D〗DataOut
本题考查数据流的知识。

ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。
可以使用 ObjectInputStream 读取(重构)对象。
通过在流中使用文件可以实现对象的持久存储。
选项A正确, 本题答案为A。

【31】下列选项中能实现连接管道流的方法是
〖A〗write()
〖B〗flush()
〖C〗connect()
〖D〗print()
题考查IO流 管道流

Write()向管道流中写入数据(发送);
flush()在java中是刷新缓冲区的作用;
connect()是实现连接管道流的方法。
print()是输出数据。
所以本题答案为C。

【32】下列说法正确的是
〖A〗InputStream是字符流类
〖B〗OutputStream是字符流类
〖C〗Reader是字符流类
〖D〗BufferedReader可以向文件中写入一行数据
本题考查IO流

InputStream, OutputStream都是字节流类, BufferedReader这个类就是一个包装类, 它可以包装字符流, 将字符流放入缓存里, 先把字符读到缓存里, 到缓存满了或者你flush的时候, 再读入内存, 就是为了提供读的效率而设计的。
所以本题答案为C。

【33】JOptionPane类中的参数optionType的作用是
〖A〗定义作为此对话框的Component
〖B〗定义Message的样式
〖C〗定义在对话框底部显示的选项按钮集合
〖D〗定义显示的对话框类型
本题考查Java API方法

Swing中提供了JOptionPane类。
optionType:定义在对话框的底部显示的选项按钮的集合。
选项C正确, 本题答案为C。

【34】下列选项中不能实现事件响应的方式是
〖A〗通过事件适配器
〖B〗通过事件响应内部类
〖C〗通过自定义函数
〖D〗通过匿名类
本题考查java事件处理机制。

适配器 其实 从 接口事件演变尔来的 相当于触发器 说简单点 它就是一些动作 。
而自定义函数不能实现事件响应, 选项C正确, 本题答案为C。

【35】当键盘被按下时, 将调用的键盘事件接口方法是
〖A〗void keyTyped(KeyEvent);
〖B〗void keyReleased(KeyEvent);
〖C〗void keyPressed(KeyEvent);
〖D〗void keyUpDown(KeyEvent);
本题考查java键盘事件。

键盘监听接口的API : void keyPressed(KeyEvent e)按下键时调用。

void keyReleased(KeyEvent e)当键已被释放时调用。

void keyTyped(KeyEvent e)键入键时调用。

选项C正确, 本题答案为C。

【36】下列程序的编译和运行结果是
1 public class Test implements Runnable {
    2 public static void main(String[] args) {
        3 Thread tt = new Thread();
        4 tt.start();
        5
    }
    6 7        public void run() {
        8 System.out.println("Good luck!");
        9
    }
    10
}
〖A〗程序不能通过编译, 提示第1行有错
〖B〗程序通过编译, 并且运行时输出字符串Good luck !
〖C〗程序通过编译, 但运行时没有输出字符串Good luck !
〖D〗程序不能通过编译, 提示第3行有错
本题考查的是线程中的方法。

java的线程是通过java.lang.Thread类来实现的。
VM启动时会有一个由主方法所定义的线程。
可以通过创建Thread的实例来创建新的线程。
每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的, 方法run()称为线程体。
通过调用Thread类的start()方法来启动一个线程。
start()方法来启动线程, 真正实现了多线程运行。
这时无需等待run方法体代码执行完毕, 可以直接继续执行下面的代码。
选项C正确, 本题答案为C。

【37】下列方法调用后, 可能会使线程进入可运行状态的是
〖A〗join()
〖B〗isAlive()
〖C〗sleep()
〖D〗yield()
本题考查线程相关的方法。

join()把指定的线程加入到当前线程。
isAlive()功能是判断当前线程是否处于活动状态。
sleep()是让线程进行休眠状态。
选项D正确, 本题答案为D。

【38】在堆栈类StackTest的定义中, 为了保证堆栈在并发操作中数据的正确性, 应在下划线处填入的代码自上而下分别是
public class StackTest {
    private int idx = 0;
    private char[] data = new char[10];
    public ________ void push(char c) {
        ……
    }
    public ________ void pop() {
        ……
    }
}
〖A〗synchronized, synchronized
〖B〗synchronized, 不用填写
〖C〗不用填写, synchronized,
〖D〗都不用填写
本题考查Java堆栈知识

堆栈中使用相同的synchronized是为了保证访问数据的一致性。

选项A正确, 本题答案为A。

【39】下列关于Applet的叙述中, 正确的是
〖A〗Applet是可以在浏览器中运行的Java类
〖B〗Applet中不能构造swing界面
〖C〗同一个页面中的Applet之间不能通信
〖D〗Applet不支持多线程
本题考查Java中的Applet类。

Application以main()方法为入口点运行, Applet要在浏览器或appletviewer中运行, 运行过程比Application更复杂。
所以答案为A。

【40】列代码包括一个HTML文件和一个定义Applet类的Java程序。为了使HTML文件在浏览器中运行时显示"Good Morning!", 在下划线处应填入的代码是
/*hello.html*/
<HTML><HEAD><TITLE > Hello</TITLE></HEAD><BODY><APPLET CODE = " HelloApplet.class " _______ = 150 _______ = 25></APPLET></BODY></HTML>/*HelloApplet.java*/
import java.awt.*;
import java.applet.*;
public class HelloApplet extends Applet {
    public void __________(Graphics g) {
        g.drawString("Good Morning!!", 25, 25);
    }
}
〖A〗WIDTH, HEIGHT, paint
〖B〗VGAP, HGAP, update
〖C〗WIDTH, HEIGHT, start
〖D〗VGAP, HGAP, paint
本题考查html知识

WIDTH, HEIGHT分别表示宽, 高。
Paint方法为java中的画图方法。
选项A正确, 本题答案为A。

编程题

【41】在考生文件夹中存有文件名为Java_1.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
对Java_1.java文件进行完善并调试, 使程序输出的结果如下:
b的结果是:5
1 : class 2 : 15 3 : +b
主要考查考生对类定义的应用以及对运算符的应用
填空1:定义类的格式
填空:2:因为其是二进制异或运算所以与b异或运算得5 所以c得二进制为1111 即十进制15
填空3 : b的结果用+号做拼接符连接
【42】在考生文件夹中存有文件名为Java_2.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
创建一个线程, 按照从1到5递增的顺序将这两个整数打印出来, 使程序的输出结果如下:
x = 1, y = 1
x = 2, y = 2
x = 3, y = 3
x = 4, y = 4
x = 5, y = 5
1 : implements Runnable 2 : r 3 : k 4 : y = k + 1
主要考查考生对线程以及循环
填空1:其重写了run()方法所以要实现Runnable接口
填空:2:将Java实现加到线程中
填空3:下文使用到k 则需要给其定义
填空4:下面输出x与y要相等 因为x自加1了所以要让其k值+1 因为退出循环与k有关所以y = k + 1
【43】在考生文件夹中存有文件名为Java_3.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
统计一个英文文本字符串中包含的英文元音字母的个数, 使程序的运行结果如下:
The text contained vowels : 88
1 : textLength 2 : charAt(i)3 : vowels++
主要考查考生对字符串方法的应用
填空1:因为下文使用到了textLength 即长度表示
填空:2:将字符串每个字符全部找出来, java中String类提供了charAt()方法遍历每个字符
填空3:找到一个计数+1 使用vowels计数
posted @ 2020-03-10 14:11  M了个J  阅读(818)  评论(0编辑  收藏  举报