福州大学java程序设计期末A卷.docx
- 文档编号:9704775
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:24
- 大小:33.88KB
福州大学java程序设计期末A卷.docx
《福州大学java程序设计期末A卷.docx》由会员分享,可在线阅读,更多相关《福州大学java程序设计期末A卷.docx(24页珍藏版)》请在冰豆网上搜索。
福州大学java程序设计期末A卷
课程名称Java程序设计考试日期2008.1.14
考生姓名学号专业或类别
题号
一
二
三
四
五
总分
累分人签名
题分
30
15
10
23
22
100
得分
考生注意事项:
1、本试卷共16页,请查看试卷中是否有缺页。
2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。
一、选择题(每小题1.5分,共30分)
得分
评卷人
1、下列不属于java语言的特色的是()。
A、java提供无用存储单元收集机制B、java具有可移植性
C、java支持运算符重载D、java提供多线程机制
2、以下两条语句inta=6,b=7,c;c=a+++++b;执行后,a、b、c三个变量的值分别为()。
A、6,7,13B、6,8,14
C、7,8,15D、7,8,14
3、以下程序段的输出结果为()。
for(inti=1;i<=6;i++)
{
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','t'};
char[]s2=newchar[3];
System.arraycopy(s1,2,s2,0,3);
System.out.println(newString(s2));
}
}
(1)以上程序能否通过编译?
(1分)
(2)若能通过编译,请写出执行结果;若不能,请修改。
(4分)
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){
System.out.println(student.getName()+"被老师叫醒了");
}
System.out.println(student.getName()+"开始听课");
}
elseif(Thread.currentThread()==teacher){
for(inti=1;i<=3;i++){
System.out.println("上课啦!
");
try{
Thread.sleep(500);
}
catch(InterruptedExceptione){
System.out.println("thereisaninterruptioninteacherprocess!
");
}
}
student.interrupt();
}
}
}
publicclassB{
publicstaticvoidmain(String[]args){
Aa=newA();
a.student.start();
a.teacher.start();
}
}
设操作系统在调度同优先级线程时,按照就绪队列中先后次序进行调度。
(1)写出在以上程序执行过程中,CPU上线程的变换情况。
(即在不同时间段CPU上执行的是哪个线程)(2分)
(2)写出程序的执行结果。
(4分)
4、classA{
privateinta;
staticintb;
protectedintc;
voidf(intx,inty,intz){
a=x;b=y;c=z;
System.out.println("thisisffunctioninclassA!
");
System.out.println("a="+a+"b="+b+"c="+c);
}
staticvoidg(intx){
b=x;
System.out.println("thisisgfunctioninclassA!
");
System.out.println("b="+b);
}
}
classBextendsA{
staticintb;
protectedintc;
voidf(intx,inty,intz){
super.f(x,y,z);
b=y+1 ;c=z+1 ;
System.out.println("thisisffunctioninclassB!
");
System.out.println("b="+b+"c="+c);
}
staticvoidg(intx){
b=x;
System.out.println("thisisgfunctioninclassB!
");
System.out.println("b="+b);
}
}
publicclassM{
Publicstaticvoidmain(String[]args){
Aaa=newB();
aa.f(1,2,3);
aa.g(4);
System.out.println("b="+A.b+"c="+aa.c+
"b="+B.b+"c="+((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(“加法”);(共2分)
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());(0.5分)
b=(9)b=Double.parseDouble(input2.getText().trim());0.5分)
}
catch(NumberFormatExceptionnfe){
System.out.println("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{
publicstaticvoidmain(String[]args){
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){//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 福州大学 java 程序设计 期末