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

选择题

公共知识

【1】下列关于算法叙述正确的是()。
〖A〗算法就是程序
〖B〗设计算法时只需要考虑数据结构的设计
〖C〗设计算法时只需要考虑结果的可靠性
〖D〗以上三种说法都不对
算法是指解题方案的准确而完整的描述, 算法不等于程序, 也不等于计算方法, 所以A错误。
设计算法时不仅要考虑对数据对象的运算和操作, 还要考虑算法的控制结构。
【2】下列叙述中正确的是()。
〖A〗有一个以上根结点的数据结构不一定是非线性结构
〖B〗只有一个根结点的数据结构不一定是线性结构
〖C〗循环链表是非线性结构
〖D〗双向链表是非线性结构
线性结构应满足:有且只有一个根结点与每个结点最多有一个前件, 也最多有一个后件, 所以B正确。
所以有一个以上根结点的数据结构一定是非线性结构, 所以A错误。
循环链表和双向链表都是线性结构的数据结构。
【3】下列关于二叉树的叙述中, 正确的是()。
〖A〗叶子结点总是比度为2的结点少一个
〖B〗叶子结点总是比度为2的结点多一个
〖C〗叶子结点数是度为2的结点数的两倍
〖D〗度为2的结点数是度为1的结点数的两倍
根据二叉树的基本性质3:在任意一棵二叉树中, 度为0的叶子结点总是比度为2的结点多一个。
所以选择B。
【4】软件生命周期中的活动不包括()。
〖A〗市场调研
〖B〗需求分析
〖C〗软件测试
〖D〗软件维护
软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。
主要活动阶段是:可行性研究与计划阶段, 需求分析, 软件设计, 软件实现, 软件测试, 运行和维护, 所以选择A。
【5】某系统总体结构图如下图所示:

该系统总体结构图的深度是()。
〖A〗7
〖B〗6
〖C〗3
〖D〗2
根据总体结构图可以看出该树的深度为3, 比如:XY系统-功能2-功能2.1, 就是最深的度数的一个表现。
【6】程序调试的任务是()。
〖A〗设计测试用例
〖B〗验证程序的正确性
〖C〗发现程序中的错误
〖D〗诊断和改正程序中的错误
程序调试的任务是诊断和改正程序中的错误。
【7】下列关于数据库设计的叙述中, 正确的是()。
〖A〗在需求分析阶段建立数据字典
〖B〗在概念设计阶段建立数据字典
〖C〗在逻辑设计阶段建立数据字典
〖D〗在物理设计阶段建立数据字典
数据字典是在需求分析阶段建立, 在数据库设计过程中不断修改、充实和完善的。
【8】数据库系统的三级模式不包括()。
〖A〗概念模式
〖B〗内模式
〖C〗外模式
〖D〗数据模式
数据库系统的三级模式是概念模式、外模式和内模式, 所以选择D。
【9】有三个关系R、S和T如下:

则由关系R和S得到关系T的操作是()。
〖A〗自然连接
〖B〗
〖C〗投影
〖D〗
自然连接是一种特殊的等值连接, 它要求两个关系中进行比较的分量必须是相同的属性组, 并且在结果中把重复的属性列去掉, 所以根据T中元组可以判断R和S做的是自然连接操作。
【10】下列选项中属于面向对象设计方法主要特征的是()。
〖A〗继承
〖B〗自顶向下
〖C〗模块化
〖D〗逐步求精
面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态性, 所以选择A。

专业知识

【11】下列对Java特性的叙述中, 错误的是
〖A〗在定义Java子类时, 不可以增加新方法
〖B〗Java语言的特性之一是动态性
〖C〗Java语言用解释器执行字节码
〖D〗Java中的类一般都有自己的属性和方法
在Java继承关系中一个类继承另一个类时不仅会继承父类的属性和方法还可以增加自己特有的属性和方法。
本题答案为A选项。
【12】下列不属于Java保留字的是
〖A〗package
〖B〗count
〖C〗try
〖D〗static
"package"是表示包, 在类中导包时会使用到, 是java的保留字。
"try ..catch"是处理异常时用, 是java的保留字; static在定义属性和方法时使用的关键字, 也是java的保留着。
本题答案为B选项。
【13】下列标识符中, 符合Java命名约定的是
〖A〗doublevoid ShowStudentName( )
〖B〗public class Test
〖C〗char Choise
〖D〗package com.DB.hr
本题考查Java命名规范。
A选项考查方法的命名, 方法命名需遵循驼峰命名法, 即第一个单词首字母小写之后每个单词首字母大写。
因此, 不符合规范。
C选项考查变量名的命名, Java中变量名用小写字母或单词表示, 最好做到见名知义, 因此C选项错误。
在Java中习惯使用小写字母为包命名, 所以D选项错误。
B是定义一个类, 类名中每个单词首字母大写其余小写。
本题答案为B选项。
【14】下列选项中的三元运算符是
〖A〗?:
〖B〗++
〖C〗>>=
〖D〗/=
条件表达式"? :"是三元运算符。
本题答案为A选项。
【15】下列语句中, 错误的是
〖A〗int a = 2.5;
〖B〗float b = 3;
〖C〗boolean t = false;
〖D〗Integer k = 1;
A选项中int为整数类型, 不能保存小数。
本题答案为A选项。
【16】下列代码段执行后的结果是
int data = 279;
int d1 = data / 100;
int d2 = data % 100 / 10;
int d3 = data % 10;
int s = d3 + d2 + d1;
System.out.println("" + s);
〖A〗18
〖B〗23
〖C〗36
〖D〗81
因为运算符"/"两边的运算对象为整数, 变量d1的值为整数2。
data求余100等于79, 79 / 10等于7即d2为7。
data % 10等于9, 即d3 = 9; 再将d1, d2, d3的值相加输出。
本题答案为A选项。
【17】下列代码段执行后, c的值为
int a = 8, b = 6, c = 5, t;
if (a > b) {
    t = a;
    a = b;
    b = t;
}
if (a > c) {
    t = a;
    a = c;
    c = t;
}
〖A〗0
〖B〗5
〖C〗6
〖D〗9
本题考察if分支语句。
第一个if语句满足条件进入执行语句后, 交换变量a和b的值, 交换以后a = 6, b = 8。
第二个if满足条件进入执行语句后, 交换变量a和c的值, 交换后a = 5, c = 6。
本题答案为C选项。
【18】下列代码段执行后的结果是
int k = 1, s = 0;
while (k++ < 5)
    s += k;
System.out.println("" + s);
〖A〗6
〖B〗10
〖C〗14
〖D〗15
"k++"表示k参与运算后, 再自增1。
循环累加k的值存放到变量s中。
k = 1时, k++ > 5为真。
自增1后k = 2, 累加到s, s = 2; 循环继续。
直到k = 5时, 循环条件不满足退出循环。
K = 2, 3, 4, 5的和存放到s中。
本题答案为C选项。
【19】下列代码段执行后的结果是
int n = 0;
for (int i = 1; i < 10; i++)
    for (int j = 1; j <= 5; j++) {
        if (j == 3)
            break;
        n = n + 1;
    }
System.out.println("" + n);
〖A〗3
〖B〗18
〖C〗27
〖D〗45
本题主要考察循环嵌套。
外层循环执行9次。
j = 3时, 内循环退出, 内循环执行2次。
内循环共计执行18次。
内循环的作用是n累加1。
所有循环结束后n = 18, 程序打印输出n的值。
本题答案为B选项。
【20】下列代码段执行后的结果是
int k = 0;
int[] a = { 2, 9, 8, 9, 4 };
for (int i = 0; i < 5; i++) {
    if (a[i] >= a[k]) {
        k = i;
    }
}
System.out.print(" " + k);
〖A〗0
〖B〗1
〖C〗2
〖D〗3
程序是查找数组中的最大值。
因为判断条件为a[i] >= a[k], 可知下标3的元素为最大值。
本题答案为D选项。
【21】下列说法中, 错误的是
〖A〗Java编程时, 要求应尽量多用public变量
〖B〗Java编程时, 要求应尽量少用public变量
〖C〗Java编程时, 要求应尽量不用public变量
〖D〗Java编程时, 要求应尽量使用private变量
在Java中public为访问权限控制符, 如果使用public修饰会使修饰的对象成为公共的, 任何一个类都可以访问, 这样不利于降低耦合度。
本题答案为A选项。
【22】在下列代码中, 如果方法aMethod()运行正常, 则代码的输出结果是
public void test() {
    try {
        aMethod();
        //condition 1
    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.println("condition 2");
    } catch (Exception e) {
        System.out.println("condition 3");
    } finally {
        System.out.println("finally");
    }
}
〖A〗condition 1
〖B〗condition 2
〖C〗condition 3
〖D〗finally
本题考察"try…catch…finally"语句。
如果被try包裹的语句能够正常运行, 则不会执行catch语句。
finally一定会执行。
本题答案为D选项。
【23】下列能正确地定义二维双精度数组的是
〖A〗double[][] d = new double[5, 5];
〖B〗double d[5][5] = new double[][];
〖C〗double[][] d = new double[5][5];
〖D〗double d[5, 5] = new double[][];
在Java中有三种定义多维数组的方式。
(1)int[][] arr = new int[3][4](2)int[][] = arr[3][](3)int[][] arr = { { 1, 2 }, { 3, 4, 5, 6 }, { 7, 8, 9 } }; 本题答案为C选项。
【24】下列关于构造方法的叙述中, 错误的是
〖A〗Java语言规定构造方法名与类名必须相同
〖B〗Java语言规定构造方法没有返回值
〖C〗Java语言规定构造方法不可以重载
〖D〗Java语言规定构造方法只能通过new自动调用
本题考查构造方法。
构造方法有以下几个特征。
(1)没有返回值类型, 也不需要写void。
(2)方法名必须与类名一致。
(3)在new对象时被调用。
选项A、B、C都正确。
java的构造方法可以重载, 答案为C选项。
【25】下列给字符串二维数组进行赋值的语句中, 错误的是
〖A〗String s[][] = { { "One", "Two" }, { "Three", "Four" } };
〖B〗String s[2][2] = { { "One", "Two" }, { "Three", "Four" } };
〖C〗String s[][] = new String[][] { { "One", "Two" }, { "Three", "Four" } };
〖D〗String s[][] = new String[][] { { "Zero" }, { "One", "Two", "Three", "Four" } };
二维数组定义和初始化方式。
(1)数组类型[][] = { { }, { } … }; (2)数组名[][] = new 数组类型[][] { { }, { }, … }; 定义时变量后不指定长度。
故本题答案为B选项。
【26】下列操作必须采用try / catch语句来进行异常处理的是
〖A〗访问数组元素
〖B〗构造一个文件输入流
〖C〗访问成员变量
〖D〗访问成员方法
在构造一个文件的输入流时, 因为构造文件输入流时出错的可能性很大, 所以需要使用try...catch来抛出异常。
提醒出错的位置。
本题答案为B选项。
【27】下列可加入类Child中的方法是
public class Parent {
    protected int change() {
        …
    }
}
class Child extends Parent {
}
〖A〗public int change() { … }
〖B〗int change() { … }
〖C〗private int change() { … }
〖D〗abstract int change() { … }
本题考查类的基础。
子类继承父类的方法, 该方法在子类中访问权限需大于等于父类方法, 选项C、B错误。
abstract是修饰抽象类的关键字, D选项错误。
本题答案为A选项。
【28】下列代码中, 将引起错误的是
1 class Parent {
    2 private String name;
    3 public Parent() {
    }
    4
}
5 public class Child extends Parent {
    6 private String department;
    7 public Child() {
    }
    8 public String getValue() {
        return name;
    }
    9 public static void main(String args[]) {
        10 Parent p = new Parent();
        11
    }
    12
}
〖A〗第3行
〖B〗第6行
〖C〗第7行
〖D〗第8行
父类Parent中, name定义为private类型, 这种类型的变量只有本类可以访问, 所以在子类Child中不能被访问name。
第8行会报错。
本题答案为D选项。
【29】下列关于流的叙述中错误的是
〖A〗流是输入输出设备的一种抽象表示
〖B〗字节流和字符流各自又分为输入和输出两部分
〖C〗XML流用于XML文档的读写与分析, 它是一种字节流
〖D〗Java中的流类基本上分为两类:字节流和字符流
本题考查Java中IO流的知识点。
XML流用于XML文档的读写与分析, 它是一种字符流。
本题答案为D选项。
【30】下列选项中属于FilterInputStream子类的是
〖A〗PrintWriter
〖B〗BufferedInputStream
〖C〗ObjectOutputStream
〖D〗ByteArrayInputStream
FilterInputStream 的作用是用来"封装其它的输入流,并为它们提供额外的功能"。
它的常用的子类有BufferedInputStream和DataInputStream。
本题答案为B选项。
【31】下列关于正则表达式的说法错误的是
〖A〗正则表达式是一种描述某种匹配检索规则的字符串
〖B〗正则表达式主要用于表示对字符串所要进行的操作
〖C〗java.util.regex包中有一个Pattern类, 用于进行快速模式匹配
〖D〗java.util.regex包中还具有一个Matcher匹配器类
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern), 可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
正则表达式是一种文本模式, 模式描述在搜索文本时要匹配的一个或多个字符串。
ava.util.regex包中有一个Pattern类, 用于进行快速模式匹配。
ava.util.regex包中还具有一个Matcher匹配器类。
本题答案为B选项。
【32】下面代码实现了从一个文件中读取数据并输出的功能。下划线处应填入的代码分别是
import java.io.*;
public class testIn {
    public static void main(String[] args) {
        try {
            FileReader fReader = new FileReader("score.txt");
            _____________ String str;
            while (______________) {
                System.out.println(str);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
〖A〗BufferedReader bReader = new BufferedReader(fReader); (str = bReader.readLine()) != null
〖B〗BufferedReader bReader = new BufferedReader(fReader); (str = bReader.read()) != null
〖C〗BufferedReader bReader = new BufferedReader(); str = bReader.readLine()
〖D〗BufferedReader bReader = new BufferedReader(); str = bReader.read()
BufferedReader 类的构造方法为BufferedReader(Reader in)。
构造方法形参为Reader类型对象, 同时BufferedReader类提供readline()方法读取一行数据。
read()方法读取的是一个字符。
因为变量str是字符串, 所有这里需要readline()方法, 就需要构建BufferedReader实例调用此方法。
本题答案为A选项。
【33】Java中JTableHeader类所在的包是
〖A〗javax.swing.text
〖B〗javax.swing.table
〖C〗javax.swing.tree
〖D〗javax.swing.plaf
javax.swing.text是文本类包, javax.swing.table是表格类包, javax.swing.tree提供一下容器组件, javax.swing.plaf提供外观样式操作的类和接口。
管理 JTable 表头的对象。
本题答案为B选项。
【34】下列组件中不属于容器的是
〖A〗JFrame
〖B〗JButton
〖C〗JToolBar
〖D〗JDialog
JFrame页面容器, JButton按钮组件, JToolBar工具条, JDialog对话框。
JButton不是容器。
本题答案为B选项。
【35】点击按钮所产生的事件是
〖A〗ActionEvent
〖B〗ItemEvent
〖C〗MouseEvent
〖D〗KeyEvent
ActionEvent按钮点击事件; ItemEvent项目监听事件; MouseEvent鼠标监听; KeyEvent键盘监听。
本题答案为A选项。
【36】下列关于线程的说法, 错误的是
〖A〗线程是内核级实体, 用户程序不能直接访问线程的数据
〖B〗线程是一个程序中的单个执行流
〖C〗Java的一个重要特性是在语言级支持多线程
〖D〗Java中的线程模型包含CPU、代码和数据三个部分
线程是程序中一个单一的顺序控制流程。
进程内有一个相对独立的、可调度的执行单元, 是系统独立调度和分派CPU的基本单位指令运行时的程序的调度单位。
Java的特性之一就是包含多线程处理, JAVA的线程模型由三个部分组成:CPU、代码和数据。
故选项B、C、D正确。
本题答案为A选项。
【37】为了使下列程序正常运行并且输出5个整数, 在下划线处应填入的是
class Test2 extends Thread {
    int i = 0;
    int j = 1;
    public static void main(String[] args) {
        Thread t = new Test2();
        t.start();
    }
    public void _______() {
        while (i++ < 5)
            System.out.println("j = " + j++);
    }
}
〖A〗run
〖B〗init
〖C〗start
〖D〗Test2
继承Thread类是实现多线程的一种方法。
继承后必须要重写父类中的run()方法, 并将线程的任务代码封装到这里。
Thread中定义的run方法就是用于存储线程要运行的代码。
本题答案为A选项。
【38】能够使线程从运行状态进入阻塞状态的方法是
〖A〗interrupt()
〖B〗start()
〖C〗notify()
〖D〗wait()
线程的一些方法:interrupt()中断线程, 中断状态将被清除; start()用于开启一个线程; notify()用于唤醒一个处于等待状态的线程。
wait()方法能够使线程从运行状态进入阻塞状态。
本题答案为D选项。
【39】当一个Applet所在的浏览器被最小化以后, 不可能被调用的Applet方法是
〖A〗destroy()
〖B〗init()
〖C〗stop()
〖D〗start()
init():当浏览器加载applet, 进行初始化的时候调用该法; start():在init()方法之后调用, 当用户从其它页面转到包含applet的页面时, 该方法也被调用; stop():在用户离开包含applet的页面时被调用; destroy():当applet不再被使用, 或浏览器退出的时候, 该方法被调用。
本题答案为B选项。
【40】下列代码包括一个HTML文件和一个定义Applet类的Java程序。为了使HTML文件在浏览器中运行时显示"How are you!", 在下划线处应填入的是
/*greetings.html*/
<HTML><HEAD><TITLE > Greetings</TITLE></HEAD><BODY><APPLET CODE = "__________" WIDTH = 200 HEIGHT = 30></APPLET></BODY></HTML>/*GreetingsApplet.java*/
import java.awt.*;
import java.applet.*;
public class GreetingsApplet extends Applet {
    public void paint(_______ g) {
        g.drawString("How are you!", 25, 25);
    }
}
〖A〗GreetingsApplet.class, Graphics
〖B〗GreetingsApplet, Component
〖C〗GreetingsApplet.java, Graphics
〖D〗GreetingsApplet.class, JPanel
含有Applet的网页的HTML文件代码中部带有这样一对标记, 当支持Java的网络浏览器遇到这对标记时, 就将下载相应的小应用程序代码并在本地计算机上执行该Applet, java的文件应为编译过的源文件以.class结尾, Graphics类提供相关的画画方法。
本题答案为A选项。

编程题

【41】在考生文件夹中存有文件名为Java_1.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
输出结果如下:
false
true
(1) main
(2) String
(3) s1.equals
本题考查:java中main方法的使用以及字符串相等的比较。
(1) 在Java中main方法是程序的入口, 所以第一空应填main。
(2) Java语法规定main方法的参数为String[]类型的数组。
(3) 因为字符串是引用类型的变量, new关键字会创建一个对象。
所以s1, s2, 是内容相同的两个对象, 而==比较的是地址值, equals是String类重写后的用于比较字符串内容的方法, 所以==比较的结果为false, equals比较的结果为true。
【42】在考生文件夹中存有文件名为Java_2.java的程序及文本文件a.txt和b.txt, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
程序的功能是:以两个文件名做为命令行参数, 如果两个文件都存在, 则将第二个文件的内容追加到第一个文件中, 并将第二个文件从系统中删除。
程序运行时, 将"a.txt b.txt"作为命令行参数, 会显示:
has done !
SUCCESS !
(1) args[1]
(2) f2
(3) b
(4) SUCCESS !
本题考查:IO流、File类以及FileWriter类。
(1) 两个文件名存放于args数组, 其中args[0]元素为"a.txt", args[1]元素为"b.txt", 此处填写args存[1]。
(2) FileReader类从InputStreamReader类继承而来。
该类按字符读取流中数据。
在给定 File 的情况下创建一个新 FileReader, FileReader(File file)。
这里填写f2。
(3) fr.read()返回读取到字符的个数, wirte(b)将读取到字符的个数写入a.txt文件中。
(4) 将b.txt中的内容追加到a.txt中, 并删除b.txt, 删除后并提示SUCCESS !, 此处应填SUCCESS !。
【43】在考生文件夹中存有文件名为Java_3.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
1.程序运行界面如下:

2.点击open file按扭, 打开文件对话框, 选择文件, 在文本框中输出所选文件的路径;
3.点击save file按扭, 打开文件对话框, 在对话框中输入文件名, 并在文本框中输出保存文件的路径。
(1)file chooser(2)this(3)this(4)true(5)event
本题考查:java的swing容器的使用以及事件和相应的监听器。
(1) 窗口的标题为file chooser, new JFrame(file chooser)时通过构造函数指定标题。
(2) this代表本类中的button实例, 把button实例加上一个监听器, 当鼠标点击了这一个button的时候就会触发这个监听器。
(3) this代表本类中saveButton实例, 把saveButton实例加上一个监听器, 当鼠标点击了这一个saveButton的时候就会触发这个监听器。
(4) frame.setVisible(boolean), false为隐藏窗口 true为显示窗口 所以填写true。
(5) 由event.getActionCommand()可知ActionEvent类的引用为event。
posted @ 2020-03-10 12:37  M了个J  阅读(804)  评论(0编辑  收藏  举报