JAVA期末测试题-A卷答案与评分标准
林语堂语录-厦门大同中学
四川大学锦江学院期末考试试题(A卷)(闭卷)
(2009—2010学年第一学期)
课程号:150057 课序号: 课程名称:
Java程序设计 任课老师: 周红 成绩:
适用专业年级:
07级电子信息工程 学生人数: 106 印题份数: 112学号: 姓名:
考 试
须 知
四川大学锦江学院学生参加由学校组织或由学校承办的各级各类考试,必须严格执行《四川大学
锦江学院
考试工作管理办法》和《四川大学锦江学院考场规则》。有考试违纪作弊行为的,一律按照《四
川大学锦江学
院学生考试违纪作弊处罚条例》进行处理。
四川大学锦江学院各级各类考试的监
考人员,必须严格执行《四川大学锦江学院考试工作管理办法》、《四
川大学锦江学院考场规则》和《四
川大学锦江学院监考人员职责》。有违反学校有关规定的,严格按照《四川
大学锦江学院教学事故认定及
处理办法》进行处理。
一、单项选择题(每小题2分,共30分)
1.以下说法正确的是__A_ ____。
(A)
Java中所有的方法都必须在类内定义
(B)
Java中主方法可以不在类内定义,其他方法都必须定义在类内
(C)
Java中主方法必须定义在类内,其他方法可以不必定义在类内
(D)
Java中所有方法都不必在类内定义
2.Java源文件和编译后的文件扩展名分别是___
C____。
(A).class 和 .java (B).class 和
.class
(C).java 和 .class (D).java 和
.java
3.要开发Java程序,需要安装的开发包是___A ____。
(A)jdk (B)eclipse (C)notepad
(D)记事本
4.Java中所有类的默认超类为__A_ ____。
(A)Object (B)Class (C)Main
(D)Super
5.下列语句中,能正确创建一个名为scu的包是__C_ ____。
(A)import (B)import scu;
(C)package scu; (D)package
6.关于Object类中定义的toString方法,以下说法正确的是___A_ __。
(A)toString方法可以将java预定义的类型转换为字符串类型
(B)toString方法可以将字符串类转换为java预定义的类型
(C)toString方法可以将所有其他类型转换为字符串类型
(D)toString方法可以将字符串类型转换为所有其他类型
7.在子类的构造函数中要调用父类的构造函数,需要用哪个关键字____D __。
(A)final (B)extends (C)implements
(D)super
8. 在Java语言中,下列哪个包是编译器自动导入的? __A_
___。
(A) (B) (C) (D)
9.以下语句中,没有创建出字符串对象的是 ___A_____。
(A)String
str; (B)String str = “hello”;
(C)String str = new String( ); (D)new
String(“hello”);
10.关于布尔类型说法正确的是 ____A____。
(A)boolean表示布尔类型,它的取值只有true和false
注:1、试题字迹务必清晰,书写工整。 本题
3 页,本页为1页
2、题间不留空,一般应题卷分开。
教务部试题编号:
(B)bool表示布尔类型,它的取值只有true和false
(C)boolean表示布尔类型,它的取值只有1和0
(D)bool表示布尔类型,它的取值只有1和0
11.Java程序隐含的主线程是___B ____。
(A)start
(B)main (C)helloWorld (D)run
12.要定义实现Runnable接口的类,必须定义的方法是___A ____。
(A)start (B)stop (C)run
(D)yield
13.HashSet hs = new HashSet();
( (
( (集合hs中的元素有___C ____。
(A)
(B)
(C) (D)
14.ArrayList al = new
ArrayList( );
(“one”); (
(
(集合al中的元素有___D_ ____。
(A)
(B)
(C) (D)
15.判断两个字符串s1,s2值是否相等,需要使用__D_
____。
(A)if(s1=s2) (B)if(s1==s2)
(C)if( equals(s1,s2)) (D)if((s2))
二、阅读程序,写出输出结果(每小题5分,共10分)
1.下面程序的运行结果是
【1】 。0 1 2 3 4
public class Test
{
public static void main(String[] args)
{
int []a = new int[5];
for(int i=0; i<;
i++)
a[i] = i;
for(int b:a)
(b);
}
}
2.下面程序的运行结果是 【2】
。 len = 3
public class Example
{
private static int len = 0;
public static
void main(String[] args)
{
Example s1 =
new Example();
Example s2 = new Example();
++;
++;
注:1、试题字迹务必清晰,书写工整。
本题 3 页,本页为2页
2、题间不留空,一般应题卷分开。
教务部试题编号:
}
++;
n(
}
三、论述题(第1~3小题各8分,第4小题12分,共36分)
1.什么是线程?举例说明多线程的优点有哪些?
线程:是进程中的一个单一的连续控制流程,拥有独立的执行控制,由操作系统负责调度。
多
线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同
一时间需要完成多
项任务的时候被实现的。
使用线程的好处有以下几点:
(1)使用线程可以把占据长时间的程序中的任务放到后台去处理
(2)用户界面可以更加
吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以
弹出一个进度条来显示处理的进度
(3)程序的运行速度可能加快
(4)多线程可以让同一个程序的不同部分并发执行
例如:网页同时加载多个图片
2.什么是异常?举例说明程序什么时候需要处理异常?处理异常的程序有什么优点?
Java中的异常定义了程序中遇到的轻微的错误条件,比如:打开一个不存在的文件、网络
连接中断、数组下标越界等。
有处理异常的程序:发生异常,捕获后,可继续执行后面的程序。
无处理异常的程序:发生异常,程序终止
处理了异常的程序更健壮。
4.解释什么是同步,有哪些方式可以实现线程同步?
同步机制,利用同步保护临界区, 即
:用来保护某段代码在执行的时候以独占的方式执
行,这时如果有第二个线程想访问这个对象时就会被暂
停。一直等到独占的
代码执行为止,防止出现临界错误。任何一个对象都有一个监视器,或者叫锁。
同步方案1:同步块,给对象加锁
同步方案2:同步方法,给this对象加锁
目的:阻止一个线程执行到临界区,另一个线程进入。
3.在
socket编程,完成服务器端和客户端的程序开发,分别需要哪些步骤?
服务器端:
(1). 创建一个服务器端套接字,并绑定到指定端口
(2).
让服务器套接字监听连接请求,若客户端请求连接,则接受连接,返回通信套接字
(3).
调用Socket的getOutputStream( ) 方法和getInputStream(
)获取输入输出流,发送接收
数据
(4). 调用Socket的close(
) 方法关闭通信套接字若不再输入输出还可用close关闭输入输
出流
客户端:
(1). 创建一个客户端套接字,并连接到服务器的指定端口
(2).
调用Socket的getOutputStream( ) 方法和getInputStream(
)获取输入输出流,发送接收
数据
(3). 调用Socket的close(
) 方法关闭通信套接字若不再输入输出还可用close关闭输入输
注:1、试题字迹务必清晰,书写
工整。 本题 3 页,本页为3页
2、题间不留空,一般应题卷分开。
教务部试题编号:
出流
四、编程题(第1小题8分,第2小题16分,共计24分)
1.已知有一个ArrayList类型的集合al,它里面存放了一些字符串元素,
有迭代器接口的声明如下:
public interface Iterator
{
Boolean hasNext();
Object
next();
void remove();
}
请定义一个迭代器,并利用此迭代器遍历集合al,打印输出al中的每个元素。
参考程序:
创建集合al的迭代器
Iterator it = or(); 3分
while(t()) 5分
{
打印输出al的每一个元素
n(());
}
}
2.利用多线程的方法,写一个程序,模拟10个人在3个窗口买票的过程,程序输出结果
类似:
第10个人在Thread-0窗口买票
第9个人在Thread-1窗口买票
第8个人在Thread-2窗口买票
第7个人在Thread-0窗口买票
第6个人在Thread-1窗口买票
第5个人在Thread-2窗口买票
第4个人在Thread-2窗口买票
第3个人在Thread-1窗口买票
第2个人在Thread-0窗口买票
第1个人在Thread-0窗口买票
参考程序:
class
SellThread implements Runnable 1分
{
一共有10张火车票
private int number;
SellThread(){number = 10} 2分
public
void run() 8分
{ while(number >
0)
{ 打印出售火车票的窗口和第几张火车票
n(“第”+number+”个人在”Thread.
currentThread().getName()+
注:1、试题字迹务必清晰,书写工整。
本题 3 页,本页为4页
2、题间不留空,一般应题卷分开。
教务部试题编号:
买票
number--;
}}}
public class TicketsSystem {
public static
void main(String[] args)
{ 有三个售票窗口
SellThread st = new SellThread(); 2分
Thread th1 = new Thread(st); 0.5分
();
0.5分
Thread th2 = new Thread(st); 0.5分
(); 0.5分
Thread
th3 = new Thread(st); 0.5分
();
0.5分
}
}
注:1、试题字迹务必清晰,书写工整。
本题 3 页,本页为5页
2、题间不留空,一般应题卷分开。
教务部试题编号: