福州大学java程序设计期末A卷文档格式.docx
《福州大学java程序设计期末A卷文档格式.docx》由会员分享,可在线阅读,更多相关《福州大学java程序设计期末A卷文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
{
if(i==2)continue;
if(i==4)break;
System.out.print(i+“”);
}
A、13B、1234
C、123D、134
4、在浏览器中执行applet
程序时,以下哪个方法将最先被执行(
)。
A、init()
B、start()
C、destroy()
D、stop()
福州大学2007~2008学年第一学期考试A卷
5、下列关于Applet的说法错误的是()。
A、Applet自身不能运行,必须嵌入到其它应用程序(如浏览器)中运行
B、从web服务器上下载的Applet可以读写本地磁盘文件
C、在Applet对应的HTML文档中使用param标记可向该Applet传递参数
D、Applet的主类要定义为java.applet.Applet类的子类
6、下列关于线程的说法错误的是()。
A、一个进程可被划分为多个线程
B、JVM加载代码后就会启动一个主线程
C、在GUI程序中,java使用线程AWT_EventQueue专门负责处理GUI事件
D、在Java中,Thread类由Runnable类派生而来。
7、下列关于线程的说法正确的是()。
A、对于使用同一目标对象的线程,目标对象的成员变量自然就是这些线程共享的数据单元
B、继承Thread类创建线程的方法中采用了接口回调技术
C、使用同一目标对象的线程共享目标类中run()方法所定义的局部变量
D、非主线程不能启动其它线程
8、对于下面的程序哪个结论是正确的()。
EnumColor{red,blue,yellow}
publicclassA{
publicstaticvoidmain(Stringargs[]){
for(Colora:
Color.values())
System.out.println(a+”,”);
}
}
A、程序无法通过编译
B、程序可以通过编译,但无法正常运行
C、程序运行结果为0,1,2
D、程序运行结果为red,blue,yellow
9、InetAddress类的哪个方法可以获取本地主机的网络地址(即InetAddress对象)()。
A、getByName(String)B、getLocalHost()
C、getAddress()D、getHostAddress()
10、想要读取URL资源中的html文本,下列方法正确的是()。
A、对URL对象调用openStream()方法,获取此URL资源上的输入流再进行读取
B、对URL对象调用retrieveContent()方法
C、对URL对象调用getConnection()方法打开到该URL资源的连接后再对该连接调用getInputStream()方法获取此连接上的输入流进行读取
D、对URL对象调用openConnection()方法打开到该URL资源的连接后再对该连接调用openStream()方法获取此连接上的输入流进行读取
11、加载JDBC驱动的正确方法是()。
A、使用类java.sql.DriverManager的getDriver方法
B、使用类java.sql.DriverManager的getConnection方法
C、使用类java.lang.Class的forName方法
D、使用接口java.sql.Driver的connect方法
12、设已建立好到某数据库的连接conn,对conn调用哪个方法返回的对象可用于执行存储过程()。
A、prepareCallB、prepareStatement
C、createStatementD、createCall
13、当需要许多面板切换,而每个面板需要显示为不同布局时,可以使用()。
A、流式布局B、卡片布局
C、盒式布局D、网格布局
14、下列说法错误的是()。
A、final类不能派生出其它类
B、基类的final方法不能被子类继承
C、基类的final方法不能被子类重写
D、final类中的所有方法都是final方法
15、下列关于公有类中成员的访问权限说法错误的是()。
A、友好成员可以被本类或同包中的其它类访问,但不能被异包中的类访问
B、公有成员可以被其它任何类访问
C、私有成员仅可被本类访问
D、保护成员仅可以被本类或同包中的子类访问,不能被异包中的类访问
16、以下代码段Pointp1=newPoint(2,3);
Pointp2=newPoint(4,5);
p1=p2;
(Point为点类)的执行结果是()。
A、p1所指Point对象的成员更新为4,5
B、以上代码段不能通过编译
C、p1和p2均指向原p2所指对象,原p1所指对象将被垃圾收集器收集
D、p1为null,原p1所指对象将被垃圾收集器收集
17、下列关于静态初始化器的说法错误的是()。
A、静态初始化器是在类加载到内存时由系统调用执行的
B、静态初始化器可执行多次
C、静态初始化器中不能出现非静态域或非静态方法
D、静态初始化器不是方法,因此没有方法名、返回值和参数列表
18、下列关于this关键字的说法正确的是()。
A、可以在构造函数内部通过this关键字调用同类的另一构造函数,并且此调用语句可以位于该构造函数内部的任意位置处
B、可以在构造函数内部通过this关键字调用同类的两个或两个以上的构造函数
C、在类的静态方法中可通过this关键字访问本类对象
D、当方法的形参和类的成员变量同名时,可以使用this关键字指明成员变量
19、当使用BufferedReader类的readLine()方法读取文本文件时,如何判断已经读完文件中的所有数据?
()
A、当readLine()返回null时
B、当程序抛出IOException异常时
C、当readLine()返回false时
D、当readLine()返回-1时
20、若类B由类A继承而来,在A类中定义有成员方法f()和成员变量i,在B类中定义有同名成员f()和i,且Aa=newB()。
则下列说法正确的是()。
A、a.i访问到的是B类中的i
B、a.f()访问到的是A类中的f()
C、语句((B)a).f();
能通过编译且访问到的是B类中的f()
D、若在B类中新增成员变量j,则可使用a.j访问该成员
二、填空题(每空1分,共15分)
注:
填空题中涉及到填写方法的空格,写出方法名即可。
1、Java源文件的后缀名为,经编译后生成的字节码文件后缀名为。
2、每一个java应用程序都是从方法开始执行的。
3、处于运行状态的线程调用yield()方法使自身进入状态。
4、Window型容器的默认布局为。
(填布局管理器类名)
5、对复选框调用addItemListener方法可为其注册ItemEvent事件侦听器,当选中复选框触发ItemEvent事件时,由事件侦听器调用itemStateChanged方法进行事件处理。
6、接口中的方法都默认带有关键字和。
7、在子类构造函数中调用父类构造函数需使用关键字,且此调用语句必须是
子类构造函数的第条语句。
8、以下代码段inta[]={1,2,3};
a[3]=4;
在执行时会抛出ArrayIndexOutOfBoundsExcepti异常。
(填异常类名)
9、为实现同一网页中两个Applet间的通信,可在一个Applet中通过Applet类提供的
方法获取AppletContext对象后,再通过该对象调用AppletContext类的方法获取指定名称的Applet的对象引用。
10、在读写过程中为减少对磁盘的访问次数,应采用流。
三、判断题(每小题1分,共10分)
1、Java源文件中包含main()方法的主类类名必须与源文件名相同。
2、在java中直接把一个高精度的值赋给一个低精度变量不会造成编译错误,但会带来精度的损失。
3、抽象类中不能有私有成员变量和方法。
4、由于Java仅允许单继承,所以一个类仅可实现一个接口。
5、将一个对象引用声明为常量,说明该引用所指向的对象不可改变。
6、实现事件侦听接口的类必须实现该接口中的所有方法。
7、final方法可访问本类的非final方法和成员。
8、Swing组件可以直接添加到Swing顶层容器中。
9、如果在子类中重新定义与父类成员变量同名的变量,则父类成员变量在子类对象中不占用空间。
10、线程在同步方法中调用wait()方法使本线程释放了该同步方法上的锁,即其它线程有机会访问该同步方法。
四、程序阅读题。
(共23分)
1、publicclassA{
publicstaticvoidmain(String[]args){
ScannerinScan=newScanner(System.in);
System.out.println("
pleaseinputalineoftext:
"
);
Strings;
while(inScan.hasNext()){
s=inScan.next();
if(s.equals("
&
)break;
System.out.print(s+"
*"
(1)要使以上程序能够通过编译,必须引入什么包?
(1分)
(2)使用import语句引入上问的包后执行程序,当屏幕上出现“pleaseinputalineoftext:
”后输入文本行“Iamastudent&
”,得到的输出是什么?
(4分)
2、publicclassA{
publicstaticvoidmain(String[]args){
char[]s1={'
s'
'
t'
u'
d'
e'
n'
};
char[]s2=newchar[3];
System.arraycopy(s1,2,s2,0,3);
System.out.println(newString(s2));
(1)以上程序能否通过编译?
(2)若能通过编译,请写出执行结果;
若不能,请修改。
3、classAimplementsRunnable{
Threadstudent,teacher;
A(){
teacher=newThread(this);
student=newThread(this);
teacher.setName("
刘教授"
student.setName("
陈强"
publicvoidrun(){
if(Thread.currentThread()==student){
try{
System.out.println(student.getName()+"
正在睡觉,不听课"
Thread.sleep(1000*60*60);
catch(InterruptedExceptione){
被老师叫醒了"
开始听课"
elseif(Thread.currentThread()==teacher){
for(inti=1;
=3;
i++){
System.out.println("
上课啦!
try{
Thread.sleep(500);
}
catch(InterruptedExceptione){
thereisaninterruptioninteacherprocess!
student.interrupt();
publicclassB{
Aa=newA();
a.student.start();
a.teacher.start();
设操作系统在调度同优先级线程时,按照就绪队列中先后次序进行调度。
(1)写出在以上程序执行过程中,CPU上线程的变换情况。
(即在不同时间段CPU上执行的是哪个线程)(2分)
(2)写出程序的执行结果。
4、classA{
privateinta;
staticintb;
protectedintc;
voidf(intx,inty,intz){
a=x;
b=y;
c=z;
thisisffunctioninclassA!
a="
+a+"
b="
+b+"
c="
+c);
staticvoidg(intx){
b=x;
thisisgfunctioninclassA!
b="
+b);
classBextendsA{
super.f(x,y,z);
b=y+1
;
c=z+1
thisisffunctioninclassB!
thisisgfunctioninclassB!
publicclassM{
Publicstaticvoidmain(String[]args){
Aaa=newB();
aa.f(1,2,3);
aa.g(4);
+A.b+"
+aa.c+
"
+B.b+"
+((B)aa).c);
写出以上程序的执行结果。
(7分)
五、程序补充题(共22分)
1、要求实现一个简单的计算器,界面如下图所示。
在两个可编辑的文本框中可输入两个操作数,选择一种计算类型(仅可选择一种),点击确定按钮,结果即显示在下方的不可编辑文本框中。
importjava.awt.*;
importjavax.swing.*;
(1)importjava.awt.event.*;
classWinextendsJFrame
(2)implementsActionListener{
JTextFieldinput1,input2,result;
JButtonconfirm;
JRadioButtonsum,sub,mul,div;
Win(){
JPanelp1=newJPanel();
/*请填写窗口北部面板的界面设计代码,两个文本框的长度均为6*/
(3)input1=newJTextField(6)
(共2分)
input2=newJtextField(6)
confirm=newJButton(“确定”);
confirm.addActionListener(this);
p1.add(input1);
p1.add(input2);
p1.add(confirm);
add(p1,BorderLayout.NORTH)
JPanelchoose=newJPanel();
choose.setBorder(BorderFactory.createTitledBorder("
选择计算类型"
));
/*请填写窗口中部面板的界面设计代码*/
(4)sum=newJRadioButton(“加法”);
sub=newJRadioButton(“减法”);
mul=newJRadioButton(“乘法”);
div=newJRadioButton(“除法”);
choose.setLayout(newGridLayout(4,1));
choose.add(sum);
choose.add(sub);
choose.add(mul);
choose.add(div);
ButtonGroupbg=newButtonGroup();
bg.add(sum);
bg.add(sub);
bg.add(mul);
bg.add(div);
add(choose,BorderLayout.CENTER);
/*以下为窗口南部的界面设计代码*/
(5)result=newJTextField();
(0.5分)
(6)result.setEditable(false);
(0.5分)
add(result,BorderLayout.SOUTH);
setSize(300,300);
setVisible(true);
validate();
/*请填写代码段,使点击窗口的关闭按钮时应用程序退出执行*/
(7)addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
或setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
publicvoidactionPerformed(ActionEventae){
doublea=0,b=0,c=0;
/*a,b分别表示在窗口北部文本框中输入的两个操作数的值;
c表示运算结果*/
try{
a=(8)a=Double.parseDouble(input1.getText().trim());
b=(9)b=Double.parseDouble(input2.getText().trim());
0.5分)
catch(NumberFormatExceptionnfe){
theinputisnotnumber!
/*请填写以下代码段,根据选择的计算类型进行计算并将结果显示在窗口南部的
文本框中。
若没有选择计算类型则在文本框中显示出错信息。
*/
(10)Booleanerror=false;
if(sum.isSelected())c=a+b;
elseif(sub.isSelected())c=a-b;
elseif(mul.isSelected())c=a*b;
elseif(div.isSelected())c=a/b;
elseerror=true;
if(error)result.setText(“hasnotchosenthecomputetype!
”);
elseresult.setText(String.valueOf(c));
}
publicclassEM{
newWin();
根据程序功能,填补以上空缺。
在横线处填一条语句或一个表达式;
在空白处填代码段,代码段可包含一条或多条语句。
(共10分)
2、以下程序实现了Echo服务器与客户端,功能如下:
1服务器能同时服务于多个客户
2服务器在端口8000侦听客户请求。
3服务器将客户端发来的每行文本发回客户端,直到连接终止
4服务器接收到客户端发来的“.QUIT”(忽略大小写)后,返回原串并终止连接,仍可响应后续客户的请求
5服务器接收到客户端发来的“.SHUTDOWN”(忽略大小写)后,返回”.QUIT”并终止连接,且不再响应后续客户的请求
6客户端向服务器发送串并读取反馈回来的串,直到连接终止
7如果客户端想终止连接,就向服务器发出“.QUIT”(忽略大小写)
8如果客户端想使服务器停止接收客户请求,就向服务器发出“.SHUTDOWN”(忽略大小写)
9如果客户端接收到反馈回来的串是“.QUIT”(忽略大小写),则终止与客户端的连接。
以下是客户端程序:
import.*;
importjava.io.*;
publicclassEchoClient{
publicstaticvoidmain(String[]args){//