【计算机二级Java语言】卷013
选择题
公共知识
【1】设数据结构B = (D, R), 其中
D = { a, b, c, d, e, f }
R = { (f, A), (d, B), (e, D), (c, e), (a, C) }
该数据结构为()。
D = { a, b, c, d, e, f }
R = { (f, A), (d, B), (e, D), (c, e), (a, C) }
该数据结构为()。
数据的逻辑结构有两个要素:一是数据元素的集合, 通常记为D;
二是D上的关系, 它反映了D中各数据元素之间的前后件关系, 通常记为R。
即一个数据结构可以表示成B = (D, R)。
其中B表示数据结构。
为了反映D中各数据元素之间的前后件关系, 一般用二元组来表示。
例如, 假设a与b是D中的两个数据, 则二元组(a, b)表示a是b的前件, b是a的后件。
如果一个非空的数据结构满足下列两个条件:①有且只有一个根结点; ②每一个结点最多有一个前件, 也最多有一个后件。
则称该数据结构为线性结构。
如果一个数据结构不是线性结构, 则称之为非线性结构。
根据上述理论, 本题中f为根结点, 每个结点有一个前件和一个后件, 符合线性结构的定义。
故本题答案为A选项。
即一个数据结构可以表示成B = (D, R)。
其中B表示数据结构。
为了反映D中各数据元素之间的前后件关系, 一般用二元组来表示。
例如, 假设a与b是D中的两个数据, 则二元组(a, b)表示a是b的前件, b是a的后件。
如果一个非空的数据结构满足下列两个条件:①有且只有一个根结点; ②每一个结点最多有一个前件, 也最多有一个后件。
则称该数据结构为线性结构。
如果一个数据结构不是线性结构, 则称之为非线性结构。
根据上述理论, 本题中f为根结点, 每个结点有一个前件和一个后件, 符合线性结构的定义。
故本题答案为A选项。
【2】下列叙述中错误的是()。
在循环队列中, 当front = rear时, 不能确定是队列满还是队列空。
在实际使用循环队列时, 为了能区分队列满还是队列空, 通常还需要增加一个标志s。
当s = 0时表示队列空, 当s = 1且front = rear时表示队列满。
故本题答案为A选项。
在实际使用循环队列时, 为了能区分队列满还是队列空, 通常还需要增加一个标志s。
当s = 0时表示队列空, 当s = 1且front = rear时表示队列满。
故本题答案为A选项。
【3】某带链栈的初始状态为 top = bottom = NULL, 经过一系列正常的入栈与退栈操作后, top = bottom = 20。该栈中的元素个数为()。
带链的栈是具有栈属性的链表。
线性链表的存储单元是不连续的, 为把存储空间中一些离散的空闲存储结点利用起来, 把所有空闲的结点组织成一个带链的栈, 称为可利用栈。
线性链表执行删除操作运算时, 被删除的结点可以"回收"到可利用栈, 对应于可利用栈的入栈运算, 线性链表执行插入运算时, 需要一个新的结点, 可以在可利用栈中取栈顶结点, 对应于可利用栈的退栈运算。
可利用栈的入栈运算和退栈运算只需要改动top指针即可。
当top = bottom = 20时链栈中的元素个数为1。
故本题答案为A选项。
线性链表的存储单元是不连续的, 为把存储空间中一些离散的空闲存储结点利用起来, 把所有空闲的结点组织成一个带链的栈, 称为可利用栈。
线性链表执行删除操作运算时, 被删除的结点可以"回收"到可利用栈, 对应于可利用栈的入栈运算, 线性链表执行插入运算时, 需要一个新的结点, 可以在可利用栈中取栈顶结点, 对应于可利用栈的退栈运算。
可利用栈的入栈运算和退栈运算只需要改动top指针即可。
当top = bottom = 20时链栈中的元素个数为1。
故本题答案为A选项。
【4】设一棵度为3的树, 其中度为2, 1, 0的结点数分别为3, 1, 6。该树中度为3的结点数为()。
根据题目有6个度为0的结点: 1个度为1的结点: 3个度为2的结点:因此最后度为3的结点有1个:故本题答案为A选项。
【5】下面描述错误的是()。
模块独立性的概念是抽象、模块化、信息隐蔽和局部化的直接结果。
模块的独立性是指软件模块的编写和修改应使其具有独立功能, 且与其他模块的关联尽可能少。
故本题答案为A选项。
模块的独立性是指软件模块的编写和修改应使其具有独立功能, 且与其他模块的关联尽可能少。
故本题答案为A选项。
【6】下面属于黑盒测试方法的是()。
黑盒测试方法也称为功能测试或数据驱动测试。
黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。
黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图等。
白盒测试方法主要有逻辑覆盖测试(语句覆盖、路径覆盖、判断覆盖、条件覆盖)、基本路径测试等。
故本题答案为A选项。
黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。
黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图等。
白盒测试方法主要有逻辑覆盖测试(语句覆盖、路径覆盖、判断覆盖、条件覆盖)、基本路径测试等。
故本题答案为A选项。
【7】下面模型中为概念模型的是()。
数据模型按照不同的应用层次分为3种类型:概念数据模型、逻辑数据模型、物理数据模型。
概念数据模型有实体联系模型(E - R模型)、面向对象模型及谓词模型; 逻辑数据模型有层次模型、网状模型、关系模型和面向对象模型。
故本题答案为A选项。
概念数据模型有实体联系模型(E - R模型)、面向对象模型及谓词模型; 逻辑数据模型有层次模型、网状模型、关系模型和面向对象模型。
故本题答案为A选项。
【8】学生关系模式中有D(D#, Dn, Dl, DAddr)(其属性分别为系编号、系名称、系主任和系地址)和S(S#, Sn, SG, Date, Maj, D#)(其属性分别为学号、姓名、性别、入学日期、专业和系编号)两个关系, 关系S的主键(码)是S#, 关系S的外键(码)是()。
在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。
表A中的某属性集是某表B的键, 则称该属性集为A的外键或外码。
故本题答案为A选项。
表A中的某属性集是某表B的键, 则称该属性集为A的外键或外码。
故本题答案为A选项。
【9】关系的实体完整性要求关系中不能为空的属性是()。
关系模型中可以有3类完整性约束:实体完整性约束、参照完整性约束和用户定义的完整性约束。
实体完整性约束是指若属性M是关系的主键, 则属性M中的属性值不能为空值。
故本题答案为A选项。
实体完整性约束是指若属性M是关系的主键, 则属性M中的属性值不能为空值。
故本题答案为A选项。
【10】学生选修课程的关系模式为SC(S#, Sn, Sd, Sa, C#, G)(其属性分别为学号、姓名、所在系、年龄、课程号和成绩);
C(C#, Cn, P#)(其属性分别为课程号、课程名、先选课)。关系模式中包含对主属性部分依赖的是()。
若X→Y, 但Y不完全依赖于X, 则称Y对X部分函数依赖。
关系模式SC中, 主键为(S#, C#), 但显然有S#->Sd, S#->Sa, 存在非主属性对主属性的部分依赖。
故本题答案为A选项。
关系模式SC中, 主键为(S#, C#), 但显然有S#->Sd, S#->Sa, 存在非主属性对主属性的部分依赖。
故本题答案为A选项。
专业知识
【11】下列关于import语句的说法中, 错误的是
Java程序中使用import语句导入一个包中的类。
在一个Java源程序中可以有0条或多条import语句, 但必须在所有类定义之前引入标准类。
选项C正确, 本题答案为C。
在一个Java源程序中可以有0条或多条import语句, 但必须在所有类定义之前引入标准类。
选项C正确, 本题答案为C。
【12】下列标识符符合Java命名约定的是
标识符可以由字母、数字、下画线"-"和美元符"$"组成, 但数字不能开头, 不能用关键字作标识符。
类名和接口名都采用完整的英文描述符, 并且所有单词的第一个字母大写; 变量和方法名采用完整的英文描述符, 第一个字母小写, 任何中间的单词首字母大写; 包采用完整的英文描述符, 且都是由小写字母组成。
(参见Java编程规范), 选项C正确, 本题答案为C。
类名和接口名都采用完整的英文描述符, 并且所有单词的第一个字母大写; 变量和方法名采用完整的英文描述符, 第一个字母小写, 任何中间的单词首字母大写; 包采用完整的英文描述符, 且都是由小写字母组成。
(参见Java编程规范), 选项C正确, 本题答案为C。
【13】执行下列语句后, k的值为
int x = 4, y = 5;
int k = --x * y++;
本题考查++, --在前和在后的运算规则, 在前要先自身+1或-1然后再参与运算, 在后先参与运算再自身+1或-1, 本题结果是3 * 5 = 15, 选项C正确, 本题答案为C。
【14】下列代码段执行后的结果是
char k = 'B', p = 'F';
int data = p - k;
System.out.println("" + data);
字符在参与运算时会转换成对应的10进制数参与运算, B对应的10进制数是66, F对应的10进制数是70, 选项D正确, 本题答案为D。
【15】经常与switch语句一起使用的语句是
break语句可以根据需要, 使用在循环体和switch语句体内, 选项A正确, 本题答案为A。
【16】下列代码段执行后, x的值为
int x = 5;
if (x > 1 && x < 5)
x += 2;
else if (x > 10 || x < 20)
x -= 2;
else
x *= 2;
X = 5不满足if条件中的布尔表达式, 满足else if中的表达式, 执行语句3块, 选项D正确, 本题答案为D。
【17】下列代码段执行后, y的值为
int d, y = 0;
int x = 123;
while (x != 0) {
d = x % 10;
y = y * 10 + d;
x = x / 10;
}
%在java中做取余操作, /在java中做取整操作
第一次:3 3 12
第二次:2 32 1
第三次:1 321 0
选项B正确, 本题答案为B。
【18】下列代码段执行后, result的值为
long result = 0;
for (int i = 1; i < 5; i++)
result = result + i * (i + 1);
第一次循环结果:0 + 2 第二次循环结果:2 + 6 第三次循环结果:8 + 12
第四次循环结果:20 + 20 选项C正确, 本题答案为C。
【19】下列代码段执行后的结果是
int i, j;
for (i = 1; i < 3; i++) {
for (j = 10; j >= 0; j--)
if ((j % 3) == 0)
break;
System.out.print("" + i + "," + j + ",");
}
I = 1;
j = 10 2 9
里层for循环缺少大括号, break默认跳出离它最近的循环体, 本程序直接跳出第一层循环, 选项D正确, 本题答案为D。
【20】下列代码段执行后的结果是
int k = 0;
int[] num = { 3, 8, 2, 8, 5 };
for (int i = 0; i < 5; i++) {
if (num[i] > num[k]) {
k = i;
}
}
System.out.print(" " + num[k]);
循环第二次执行if中的语句块, k = 1, num[1] = 8, 选项D正确, 本题答案为D。
【21】类变量必须带有的修饰符是
在java类变量用static修饰会成为静态变量, 可以直接通过类名去调用, 不需new对象。
选项A正确, 本题答案为A。
选项A正确, 本题答案为A。
【22】关于下列代码的说法中, 正确的是
public class BankAccount {
static double loan[] = new double[10];
public static void main(String args[]) {
System.out.println(loan[9]);
}
}
数组在java中具有默认值, double类型默认值为0.0。
输出的是0.0选项C正确, 本题答案为C。
输出的是0.0选项C正确, 本题答案为C。
【23】下列代码的第10行语句运行时, 将执行的语句是
1 class Reptile {
2 public void crawl(int i, int j) {
...
}
3 public void crawl(int i) {
...
}
4
}
5 public class Tortoise extends Reptile {
6 public void crawl() {
...
}
7 public void crawl(int i) {
...
}
8 public static void main(String args[]) {
9 Reptile a = new Tortoise();
10 a.crawl();
11
}
12
}
父类的引用指向子类的对象, 向上造型, 体现多态(重写与重载), 编译期看父类, 运行期看子类, 子类的方法要应对父类的方法。
本题答案为D。
本题答案为D。
【24】下列代码中构造方法的返回类型是
public class Village {
public static void main(String args[]) {
Village c = new Village();
}
Village() {
System.out.println("hiding in Village");
}
}
java中的构造方法是用来初始化一个对象的, 并为为实例变量赋予合适的初始值。
因此构造方法不需要返回类型。
选项D正确, 本题答案为D。
因此构造方法不需要返回类型。
选项D正确, 本题答案为D。
【25】如果要抛出异常, 应该采用的子句是
当程序中需要抛出异常时, 应该使用throw子句, try catch语句是捕获并处理异常, finally代码块无论如何都会执行里面的代码块, 选项B正确, 本题答案为B。
【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[4] = 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");
}
}
}
test(0)执行if语句块里面的内容, 输出Everything is OK, test(1)数组下标越界, 通过throws抛出了, finally代码块里面的内容无论如何都会执行, 选项B正确, 本题答案为B。
【27】下列代码的运行结果是
public class ValueChange {
char c;
public static void main(String args[]) {
long l;
ValueChange vc = new ValueChange();
l = 50;
System.out.println("long is:" + l);
vc.changelong(l);
System.out.println("changed long is:" + l);
vc.c = 'J';
System.out.println("char is:" + vc.c);
vc.changeName(vc);
System.out.println("changed char is:" + vc.c);
}
public void changelong(long l) {
l = 60;
}
public void changeName(ValueChange vc) {
vc.c = 'X';
}
}
public void changelong(long l) {
l = 60;
}
此时的l值仍然是50, 60没有覆盖l值。
public void changeName(ValueChange vc) {
vc.c = 'X';
}
vc.c已经重新辅助为X, 选项B正确, 本题答案为B。
【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.substring(5, 10);
String s2 = s1.toUpperCase();
System.out.println(s2);
}
}
substring()方法用于提取字符串中介于两个指定下标之间的字符, toUpperCase()将所有的字母全部转为大写, 选项D正确, 本题答案为D。
【29】在File类中, 能返回字符串形式的文件路径名的方法是
getParent()方法返回的父级路径字符串, 如果此抽象路径名的父或如果此路径名没有指定父目录则为null。
getParentFile()的作用是获得父目录
getParentFile()的作用是获得父目录
getName()是用来返对象所代表的具体对象的名称。
选项A正确, 本题答案为A。
【30】下列代码实现了以对象流方式从score.txt文件读出数据的功能。下划线处应填入的代码是
import java.io.*;
public class testIn {
public static void main(String[] args) {
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("score.txt"));
int[] pdata = new int[3];
pdata = (int[])in._________();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
虚拟机会试图调用对象类里的readObject(), 读出byte, 选择C正确, 本题答案为C。
【31】下列选项中不是DeflaterOutput子类的选项是
Deflater 是用于压缩数据包的, 当数据包比较大的时候, 采用压缩后的数据, 可以减少带宽的占用, 加多传送的速度, GZipOutputStream ZipOutputStream JarOutputStream, 都属于压缩包类型, 选项D不满足条件, 本题答案为D。
【32】下列说法中错误的是
1、该对象的类必须实现Serializable接口。
2、该对象的串行化成员必须是非静态成员变量, 即不能保存任何的成员方法和静态的成员变量, 而且串行化保存的只是变量的值, 对于变量的任何修饰符, 都不能保存。
而对于某些类型的对象, 其状态是瞬时的, 这样的对象是无法保存其状态的, 例如一个Thread对象, 或一个FileInputStream对象, 对于这些字段, 我们必须用transient关键字标明 。
(注:保存任何的成员方法和静态的成员变量没有任何的意义, 因为对象的类已经完整的保存了他们)3、要串行化一个对象, 必须与一定的对象输入/输出流联系起来, 通过对象输出流将对象状态保存下来, 再通过对象输入流将对象状态恢复。
选项B正确, 本题答案为B。
【33】JOptionPane类中参数optionType的值不可能是
static int DEFAULT_OPTION
用于 showConfirmDialog 的类型。<br>
static int YES_NO_OPTION
用于 showConfirmDialog 的类型。<br>
static int OK_CANCEL_OPTION
用于 showConfirmDialog 的类型。<br>
选项A正确, 本题答案为A。
【34】JFrame的缺省布局管理器是
JFrame 缺省布局使用的是边界布局管理器(BorderLayout).边界布局管理器(BorderLayout)是将容器控件划分为上北(NORTH)、下南(SOUTH)、左西(WEST)、右东(EAST)、中间(CENTER)五个位置, 使用此局布的时候可以将控件分别放置在这五个位置上进行显示.选项B正确, 本题答案为B。
【35】当按钮被按下时, 应执行的方法是
这是 ActionListener 中定义的方法, java 的事件监听器的一个, 例如点击按钮、文本框里按下回车, 就会调用这个里面的方法。
选项A正确, 本题答案为A。
选项A正确, 本题答案为A。
【36】为了使下列程序正常运行并且输出字符串abc, 在下划线处应填入的是
public class Test implements Runnable {
public static void main(String[] args) {
Thread t = new___________;
t.start();
}
public void run() {
System.out.println("abc");
}
}
本题创建线程的方式是实心Runnable接口, 但最终启动线程还是Thread类中的start(), 选项C正确, 本题答案为C。
【37】如果线程正处于阻塞状态, 不能够使线程直接进入可运行状态的是
notify 仅仅通知一个线程, 并且我们不知道哪个线程会收到通知, 选项C正确, 本题答案为C。
【38】在下列Counter类的定义中, 由于某些代码定义不当, 使得对计数器counter的并发控制无法实现, 有问题的代码是
1 public class Counter {
2 public int counter = 0;
3 synchronized void add() {
4 counter++;
5
}
6 public int get() {
7 counter--;
8 return counter;
9
}
10
}
要想对计数器并发实现, 必须将counter变量定义为静态变量, 需用static修饰, 方法也应是静态方法, 所以第2行和第6行出现异常, 选项B正确, 本题答案为B。
【39】每个Applet程序必须定义为
Applet类定义了小应用程序(Applet)与其运行环境之间的一个接口;
JApplet是Applet类的扩展, 它继承了Applet的方法和执行机制, 同时也增加了对Swing构件的支持。
每个Java小应用程序都必须是Applet类或JApplet类的子类。
因此, 本题的正确答案是A。
每个Java小应用程序都必须是Applet类或JApplet类的子类。
因此, 本题的正确答案是A。
【40】下列程序定义了一个Applet, 为了使程序运行时在浏览器中显示字符串"Good Luck!", 在下划线处应填入的是
import java.awt.*;
import java.applet.*;
public class SaySomething extends Applet {
public void ________(Graphics g) {
g.drawString("Good Luck!", 40, 40);
}
}
Graphics类提供基本绘图方法, 使用paint, 本题答案为C。
编程题
【41】在考生文件夹中存有文件名为Java_1.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
对该程序进行调试, 使程序能够判断所输入的年份是否闰年。
本题的要求是:
对该程序进行调试, 使程序能够判断所输入的年份是否闰年。
1.io 2.throws 3.in 4.s
本题考查的是考生通过流读取的年份判断是否是闰年的应用
填空1:所有的字节流字符流都属于输入流和输出流
填空2 : throw语句用在方法体内, 表示抛出异常, 由方法体内的语句处理。
throws语句用在方法声明后面, 表示再抛出异常, 由该方法的调用者来处理。
throws主要是声明这个方法会抛出这种类型的异常, 使它的调用者知道要捕获这个异常。
throw是具体向外抛异常的动作, 所以它是抛出一个异常实例。
填空3 : readLine()是读取流读数据的时候用的, 当读到换行标记'\n'、'\r'(回车)时, 会跟着换行, 同时会以字符串形式返回这一行的数据, 当读取完所有的数据时会返回null
填空4:将字符串类型转为int类型
填空1:所有的字节流字符流都属于输入流和输出流
填空2 : throw语句用在方法体内, 表示抛出异常, 由方法体内的语句处理。
throws语句用在方法声明后面, 表示再抛出异常, 由该方法的调用者来处理。
throws主要是声明这个方法会抛出这种类型的异常, 使它的调用者知道要捕获这个异常。
throw是具体向外抛异常的动作, 所以它是抛出一个异常实例。
填空3 : readLine()是读取流读数据的时候用的, 当读到换行标记'\n'、'\r'(回车)时, 会跟着换行, 同时会以字符串形式返回这一行的数据, 当读取完所有的数据时会返回null
填空4:将字符串类型转为int类型
【42】在考生文件夹中存有文件名为Java_2.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
构造一个5行5列的矩阵并将其打印输出, 使程序的输出结果如下:
1 2 3 4 5
6 7 8 9 0
1 2 3 0 0
4 5 0 0 0
6 0 0 0 0
本题的要求是:
构造一个5行5列的矩阵并将其打印输出, 使程序的输出结果如下:
1 2 3 4 5
6 7 8 9 0
1 2 3 0 0
4 5 0 0 0
6 0 0 0 0
1.new 2.k++3.a[i][j] = 0 4.System.out.print("\n");
本题考查考生对二维数组的应用掌握
填空1:创建数组对象用关键字new
填空2:本程序中列的数字要求每列增加1, 用k++满足该条件
填空3:程序运行时要求每行的0都要增加1个, 可以用a[i][j] = 0来控制0的生成
填空4:输出要求5个数字换1行, \n在java中属于换行符
填空1:创建数组对象用关键字new
填空2:本程序中列的数字要求每列增加1, 用k++满足该条件
填空3:程序运行时要求每行的0都要增加1个, 可以用a[i][j] = 0来控制0的生成
填空4:输出要求5个数字换1行, \n在java中属于换行符
【43】在考生文件夹中存有文件名为Java_3.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
创建一个顶层框架类的对象, 设置框架左上角的标题为"股票分析系统", 并将顶层框架放置
到屏幕中央, 使程序的输出界面如下图所示:
本题的要求是:
创建一个顶层框架类的对象, 设置框架左上角的标题为"股票分析系统", 并将顶层框架放置
到屏幕中央, 使程序的输出界面如下图所示:
1.new JFrame 2.setTitle 3.jf
本题考查考生对窗口的相关设置操作
填空1 : JFrame是指一个计算机语言-java的GUI程序的基本思路是以JFrame为基础, 它是屏幕上window的对象, 能够最大化、最小化、关闭, 创建其对象时需要用关键new
填空2 : JFrame类提供设置标题的方法, setTitle()设置标题
填空3:要将窗口显示出来需用JFrame提供的setVisiable(true), 参数设置为true
填空1 : JFrame是指一个计算机语言-java的GUI程序的基本思路是以JFrame为基础, 它是屏幕上window的对象, 能够最大化、最小化、关闭, 创建其对象时需要用关键new
填空2 : JFrame类提供设置标题的方法, setTitle()设置标题
填空3:要将窗口显示出来需用JFrame提供的setVisiable(true), 参数设置为true