浙江工业大学Java程序设计期终考卷级计算机Word文档格式.docx
《浙江工业大学Java程序设计期终考卷级计算机Word文档格式.docx》由会员分享,可在线阅读,更多相关《浙江工业大学Java程序设计期终考卷级计算机Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
![浙江工业大学Java程序设计期终考卷级计算机Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-2/4/81e6e7a4-38e1-47f1-913e-06bc2eb465ff/81e6e7a4-38e1-47f1-913e-06bc2eb465ff1.gif)
注:
答案请写在答题纸上,否则一律不给分。
一、选择题(共15小题,每题2分,共30分)
1、以下的变量定义语句中,合法的是()
A)doublea=1.0;
B)charc=a+'
1'
;
C)double$a*5=2.0D;
D)Stringname#2="
jack"
2、以下程序片段,下列哪个选项插入到第1行引起编译错误的是()
1)packagemypackage;
2)
3)classMyClass
4){
5)//dosth
6)}
A)publicclassMainClass{}
B)packagemypackage1;
C)classB{}
3、以下程序代码,无法通过编译的是()
A)
classA{
inti=0;
}
B)
classA{inti=0;
}
classB
{
C)
classA
publicinti=0;
publicstaticvoidmethod(){
D)
}
4、以下代码段执行后的输出结果为()
intx=2,y=3;
--:
++y);
A)1B)2C)3D)4
5、给定如下Java程序片断:
publicA(){
O"
);
classBextendsA{
publicB(){
int("
K"
publicstaticvoidmain(String[]args){
Bb=newB();
上述程序将(
)
A)不能通过编译
B)通过编译,执行后输出为:
O
C)通过编译,执行后输出为:
K
D)通过编译,执行后输出为:
OK
6、已知MyInterface是一个接口,ClassA是实现了MyInterface的一个类,ClassB是ClassA的子类,则下列哪个语句是正确的?
()
A)ClassBobj=newClassA();
B)MyInterfaceobj=newClassB();
C)ClassAobj=newMyInterface();
D)MyInterfaceobj=newMyInterface();
7、下列变量哪个是引用类型的()。
A)booleans=false;
B)Strings=null;
C)ints=513;
D)floats=3.14f;
8、为了使用JDK的javac.exe编译Java应用程序,应该设置以下哪个环境变量?
()
A)java_homeB)classpathC)pathD)runtime
9、下面的程序编译后用以下命令运行:
javaExceptionDemohello,运行的情况是()
1)publicclassExceptionDemo{
2)publicstaticvoidmain(Stringargs[]){
3)for(inti=0;
i<
2;
i++){
4)args[i]);
5)}
7)}
A)发生异常,异常类型是ArithmeticException
B)发生异常,异常类型是IOException
C)发生异常,异常类型是ArrayIndexOutOfBoundsException
D)程序正常输出信息hello
10、下列说法中,正确的是()
A)一个Java源程序中的每个类都可以包含一个main方法。
B)一个Java源程序中,不能既定义接口,又定义类。
C)一个Java源程序中必须有一个类定义了main方法。
D)一个Java源程序中必须定义接口。
11、关于Java输入输出流,下列说法正确的是()
A)FileReader类和FileInputStream类都是按照字节读取的
B)FileReader类和FileInputStream类都是按照字符读取的
C)FileReader类是按字节读取的,FileInputStream类是按字符读取的
D)FileReader类是按字符读取的,FileInputStream类是按字节读取的
12、有一个类A,以下为其构造方法的声明,其中错误的是()。
A)publicvoidA(intx){...}
B)publicA(intx){...}
C)protectedA(floatx){...}
D)privateA(){...}
13、对于异常处理语句try…catch…finally,下面哪个说法是正确的?
()
A)如果有多个catch语句,对所有的catch都会执行一次
B)如果有多个catch语句,对每个符合条件的catch都会执行一次
C)多个catch的情况下,异常类的排列顺序应该是父类在前,子类在后
D)任何情况下,finally部分都会被执行一次
14、下面说法错误的是()。
A)单击CheckBox(复选框)产生ItemEvent事件,并由ItemListener处理。
B)处理Button和TextField事件监听器接口都是ActionListener。
C)一个面板(Panel)可以加入到另一个面板(Panel)中。
D)采用BorderLayout布局时,添加到NORTH区的两个按钮将并排显示。
15、关于线程,以下说法正确的是()
A)线程可以使用wait()方法,让其他线程等待,以便自己执行。
B)不管有无活动的用户线程,后台线程都会一直执行。
C)如果一个应用程序的用户线程都结束了,则后台线程自动结束。
D)线程可以使用notify()方法,让其他线程等待,以便自己执行。
二、判断题(共10小题,每题1分,共10分)
1、abstract是抽象修饰符,可以用来修饰类、属性和方法。
(对)
2、用“+”可以实现字符串的拼接,用“-”可以从一个字符串中去除一个字符子串。
(错)
3、父类的静态方法不能被子类覆盖为非静态的方法,反之亦然。
(对)
4.子类的构造方法一定会调用父类的构造方法。
5、接口和抽象类一样,虽然有构造方法,但却不能实例化对象。
(错)
6、线程t运行就是运行其run()方法,所以t.start()等价于t.run()。
(错)
7、Object类型的引用变量可以引用任何对象。
8、数据流就是从源到目的的字节的有序序列包括输入流和输出流。
(对)
9、java为每一个监听器接口都定义了对应的适配器类。
10、如果有高优先级的线程就绪,则正在执行的低优先级线程将暂停执行。
三、程序阅读题。
(共5小题,每题6分,共30分)
1、写出下列程序代码的运行结果。
intm=0,n=0;
longf()
{
returnm+n;
classBextendsA
intm=1,n=1;
longf()
{
longresult=0;
super.m=10;
super.n=30;
result=super.f()+(m+n);
returnresult;
longg()
longresult=0;
result=super.f();
returnresult/2;
classExample
{
publicstaticvoidmain(Stringargs[])
b.m=6;
b.n=2;
longresultOne=b.g();
longresultTwo=b.f();
longresultThree=b.g();
Sys
标准答案:
resultOne=0
resultTwo=48
resultThree=20
2、写出下列程序代码的运行结果:
classTest{
publicstaticStringss="
杭州电子科技大学"
publicStringms="
计算机学院"
publicvoidprintInfo()
s="
+ss+"
ms="
+ms);
publicstaticvoidmain(String[]args)
Testobj1,obj2;
obj1=newTest();
obj2=newTest();
obj1.ss="
浙江工业大学"
obj1.ms="
软件学院"
obj1.printInfo();
obj2.printInfo();
输出结果:
ss=浙江工业大学ms=软件学院
ss=浙江工业大学ms=计算机学院
3、仔细阅读下面的程序代码,写出运行后的输出结果。
classTestVector
Vector<
String>
vs=newVector<
(16,8);
vs.add("
1"
2"
vs.add(1,"
3"
if(vs.contains("
))
vs.remove("
3
"
isanelementofvs
2
4、仔细阅读下面的程序代码,若经编译和运行后,请写出打印结果。
publicclassTest
privateinti;
publicclassInner
publicvoidincreaseSize(){i++;
Innerinner=newInner();
publicvoidincreaseSize()
inner.increaseSize();
publicstaticvoidmain(String[]a)
Testtest=newTest();
for(intj=0;
j<
3;
j++)
test.increaseSize();
}
i=1
i=2
i=3
5、阅读以下程序,回答问题。
packagepackage1;
classClassA
ClassA."
packagepackage2;
importpackage1.ClassA;
publicclassClassB
newClassA().printInfo();
问题1:
上面两个类是在同一个源程序文件中吗?
问题2:
第一个类的定义有一个错误。
请改正。
参考答案:
1、不是
2、将classClassA改成publicclassClassA
四、程序填空题(共2小题,每小题5分,共10分)
1、下面是一个多线程程序。
请根据提示,将划线上
(1)~(5)的语句补充完整。
classTestMultiThreads
Threadt1=newThread(newT1());
//实例化线程,
t1.setName("
线程1"
//将线程t1改名为“线程1”
t1.start();
//启动线程t1
classT1implementsRunnable//定义T1为线程体(包含线程的数据和代码)
publicvoidrun()
while(true)
{
i++);
try
{
Thread.sleep((int)(Math.random()*5000));
//随机休眠0-5秒
}catch(InterruptedExceptione){}
2、下面的程序可以编辑文本文件,单击保存按钮可以保存文件。
如果是新的没有保存过的文件,单击保存按钮时会弹出一个保存文件对话框。
程序运行时界面如下图,请将划线的(6)~(10)的语句补充完整。
publicclassMyEditorextendsJFrameimplementsActionListener
JButtonjbSave;
JTextAreajtaText;
JScrollPanejsp;
booleanisNewFile;
FileeditFile;
publicMyEditor()
super("
MyEditor"
isNewFile=true;
jbSave=newJButton("
保存"
jbSave.addActionListener(this);
add(jbSave,BorderLayout.NORTH);
jtaText=newJTextArea(10,80);
jtaText.setLineWrap(true);
jsp=newJScrollPane(jtaText);
add(jsp);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
publicvoidactionPerformed(ActionEvente)
if(e.getSource()==jbSave)
if(isNewFile)
JFileChooserchooser=newJFileChooser();
intreturnVal=chooser.showSaveDialog(this);
if(returnVal==JFileChooser.APPROVE_OPTION)
editFile=chooser.getSelectedFile();
StringfileName=editFile.getName();
}
BufferedWriterbfw=newBufferedWriter(newFileWriter(editFile));
bfw.write(jtaText.getText(),0,jtaText.getText().length());
bfw.flush();
bfw.close();
setTitle("
MyEditor---"
+editFile.toString());
isNewFile=false;
catch(Exceptione1)
publicstaticvoidmain(String[]args)
newMyEditor();
五、编程题(共2小题,每小题10分,共20分)
1、请编程实现以下要求:
(1)定义一个接口DataStructure,包括以下方法:
BooleanisFull()
BooleanisEmpty()
VoidaddElement(Objectobj),
ObjectremoveElement()
(2)设计一个堆栈类(MyStack)实现DataStructure接口。
堆栈的大小由其构造方法指定。
要求实现的方法体现出堆栈的先进后出特性。
(3)设计一个队列类(MyQueue)实现DataStructure接口。
队列的大小由其构造方法指定。
要求实现的方法体现出队列的先进先出特性。
(4)设计一个测试类,在其主方法中用DataStructure类型的引用变量分别引用两个大小为10的MyStack对象和MyQueue对象,使用addElement()方法增加“0”,“1”,⋯“9”共10个字符串对象,再用removeElement()方法取出这些元素并打印出来。
interfaceDataStructure
booleanisEmpty();
booleanisFull();
voidaddElement(Objectobj);
ObjectremoveElement();
classMyStackimplementsDataStructure
privateintidx=0,size;
privateObject[]data;
publicMyStack(intsize)
data=newObject[size];
this.size=size;
publicbooleanisEmpty()
if(idx==0)
returntrue;
else
returnfalse;
publicbooleanisFull()
if(idx==size)
publicvoidaddElement(Objectobj)
data[idx++]=obj;
publicObjectremoveElement()
returndata[--idx];
classMyQueueimplementsDataStructure
publicMyQueue(intsize)
if(idx==0)
if(idx==size)
Objectobj=data[0];
for(inti=0;
idx-1;
i++)
data[i]=data[i+1];
idx--;
returnobj;
publicclassTestDataStructure
DataStructureds=newMyStack(10);
10;
ds.addElement("
+i);
while(!
ds.isEmpty())
ds=newMyQueue(10);
2、编写一个程序,将指定的多个文本文件合并到一个文件。
要求类的名称为MergeTxt。
在命令行状态下,该程序的运行形式是:
javaMergeTxt目标文件名合并文件1合并文件2...合并文件n
要求程序能够判断文件的类型是否正确,如果类型不正确或者给定的文件不存在时要给出错误信息。
publicclassMergeTxt
if(args.length<
3)
return;
for(Strings:
args)
if(!
s.endsWith("
.txt"
return;
try
Filedf=newFile(args[0]);
if(df.exists())
for(inti=1;
args.length;
if(!
(newFile(args[i]).exists()))
{
}
BufferedWr