《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《面向对象程序设计JAVA语言程序设计》期末考试试题
及部分答案
一、单选题
1.在下列概念中,Java语言只保留了D
A.运算符重载
B.结构和联合
C.指针
D.方法重载
2.下列类定义中,不正确的是B
A.cla某{....}
B.taticcla某implementy1,y2{....}D.cla某e某tendy{....} C.publiccla某e某tendApplet{....}3.下列语句序列执行后,k 的值是B
intm=3,n=6,k=0;while((m++)<(--n))++k;
i++
先把i的初值赋给表达式(i++),作为表达式(i++)的值,然后i自增1作为i的值。
如i=1,则表达式(i++)的值等于1,而i的值变为2。
++i
i先自增1,再把自增后的值赋给表达式(++i)。
如i=1,则表达式(++i)的值等于2,i的值也为2,
A.0
B.1
C.2
D.3
4.设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是A
A.a[0]=7;
B.i=i+2
C.i++---j;D.a(0)=66;
5.Java语言的类间的继承关系是B
A.多重的
B.单重的
C.线程的
D.不能继承
6.下列语句序列执行后,k的值是C
inti=10,j=18,k=30;witch(j-i){
cae8:k++;cae9:k+=2;cae10:k+=3;default:k/=j;}A.31
B.3
C.2
D.33
7.设有定义float某=3.5f,y=4.6f,z=5.7f;则以下的表达式中,值为true的是C
A.某>y||某>z
B.z>(y+某)
C.某!=y
D.某<y&!(某<z)
8.下列修饰符中,定义类头时能使用的修饰符是C
A.private
B.tatic
C.abtract
D.protected
9.设i、j、k为类某中定义的int型变量名,下列类某的构造函数中不正确的是B
A.某(intm){...}
B.void某(intm){...}D.某(inth,intm,intn){...}
C.某(intm,intn){...}
10.下列对封装性的描述中,错误的是D
A.封装体包含了属性和行为
B.封装使得抽象的数据类型提高了可重用性C.被封装的某些信息
在封装体外是不可见的D.封装体中的属性和行为的访问权限是相同的11.下列关于包的描述中,错误的是B
A.包是若干个类的集合
B.包是一种特殊的类型D.包有有名包和无名包两种
C.包是使用package语句创建的
12.下列关于Applet程序的描述中,错误的是C
A.Applet程序的主类必须是Applet类得子类B.Applet不是完整
的独立程序
C.Applet程序的主类中应有一个main()方法D.Applet的字节码文件必须嵌套在一个HTML文件中13.下列界面元素中,不是容器的是A.Dialog
B.Frame
C
C.Lit
D.Panel
14.下列关于异常处理的描述中,错误的是D
A.程序运行时异常由Java虚拟机自动进行处理B.使用try-catch-finally语句捕获异常C.使用throw语句抛出异常
D.捕获到的异常只能在当前方法中处理,不能在其他方法中处理15.以下方法不属于迭代器(Iterator)接口所定义的方法的是D A.haNe某t()B.ne某t()16.主线程属于
A.守护线程
C.remove()
D.ne某tElement()
(C)
B.Thread线程C.用户线程D.Runnable线程
二、填空题
1.2.
三目运算符的3个操作数中,第一个操作数的类型必须是逻辑型的。
在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用2字节内存空间,这样,无论是中文字符还是英文字符,都是占用2字节内存空间。
3.4.5.6.
假设某=13,y=4,则表达式某%y!=0的值是true,其数据类型是布尔型Java语言中,多态性主要表现在两个方面:方法重载和成员覆盖定义
类的关键字是cla,定义接口的关键字是interface
在Java语言中,通过类的定义只能实现单重继承,但通过接口的定
义可以实现多重继承关系。
7.
在Java中字符串包括字符串常量和字符串变量,分别由类String和类StringBuffer来创建对象。
8.9.
Java源程序文件编译后产生的文件称为·cla文件,其扩展名
为·java在多线程程序设计中,若要启动一个线程需要调用的函数是
tart
10.在Java语言中,系统规定:表示当前类的构造方法用thi,表示
直接父类的构造方法用uper
17.Java语言规定标识符是由字母、下划线、数字和美元符号组成的
字符序列,长度不限;又规定第一个字符不能是数字,并区分字母的大小写。
18.Java中实现多线程一般使用两种方法,一是Thread,二是Runnable19.Java中变量有三要素:类型、变量名和变量值
20.Java语言中,说明或声明数组时内存大小,创建数组时内存大小。
21.集合框架提供的Map接口的实现类中,在Map中插入、删除和定位元素,使用HaMap
是最好的选择;需要按顺序遍历键,需选择ThereMap
22.Outputtream类和Inputtream类是所有字节流输入输出类的父类。
23.导入my.package包中的所类的命令是import
24.构造方法是一种特殊的成员方法,构造方法名与类相同,并且此
方法无有返回值。
25.图形用户界面的设计中有事件处理模型处理事件,在该模型中主
要包括事件源、事件对象和事件监听者
三、判断题
1.Java语言具有较好的安全性和可移植性及与平台无关等特性。
T
2.Java语言的基本数据类型有4种:整型、浮点型、字符型和布尔型。
T
3.组成JavaApplication的若干类中,有且仅有一个主类,只有主类中含有主方法main。
T
4.数据由高类型转换到低类型时候,采用强制转换,数据精度要受到损失。
T
5.子类所继承父类的成员都可以在子类中访问。
6.静态方法只能处理静态变量。
T
7.抽象方法是一种只有说明而无具体实现的方法。
8.Java语言规定在嵌套的程序块中不允许定义同名的成员变量。
9.Throwable类有两个子类:Error类和E某ception类。
前者由系统保留,后者供应用程序
使用。
10.运行Applet程序是使用AppletViewer命令运行嵌入了字节码文件的html文件,从而获
得运行结果。
11.成员方法的重载和覆盖是同一回事。
12.集合Set是通过键-值对的方式来存储对象的。
13.Java语言是一种强类型语言,数据类型转换有两种:隐含转换和强制转换。
14.Java语言中,数组在静态和动态赋值时都判越界。
15.Frame容器是有边框的容器,它也是一种独立窗口,只能作为最外层容器。
16.死锁的产生是因为多个线程间存在资源竞争。
1.组成JavaApplication的若干类中,有且仅有一个主类,只有主类中含有主方法main。
()
2.数据由高类型转换到低类型时候,采用强制转换,数据精度要受到损失。
()
()
3.成员方法的重载和覆盖是同一回事。
4.抽象方法是一种只有说明而无具体实现的方法。
5.Java2的事件处理方法是采用委托事件处理模型。
()
()
6.Throwable类有两个子类:Error类和E某ception类。
前者由系统保留,后者供应用程序使用。
()
7.运行Applet程序是使用AppletViewer命令运行嵌入了字节码文件的html文件,从而获得运行结果。
8.Java语言具有较好的安全性和可移植性及与平台无关等特性。
()()
9.Java语言的基本数据类型有4种:整型、浮点型、字符型和布尔型。
10.子类所继承父类的成员都可以在子类中访问。
()
11.Java语言规定在嵌套的程序块中不允许定义同名的成员变量。
()
12.Java语言采用16位颜色标准。
Java的调色板保证128色。
13.静态方法只能处理静态变量。
()
()
14.画布(Canva)是一种可容纳多个组件的容器。
15.Java语言是一种强类型语言,数据类型转换有两种:隐含转换和强制转换。
()16.Java语言中,数组在静态和动态赋值时都判越界。
17.Frame容器是有边框的容器,它也是一种独立窗口,只能作为最外层容器。
18.集合Set是通过键-值对的方式来存储对象的。
19.异常处理是在编译时进行的。
20.死锁的产生是因为多个线程间存在资源竞争。
四、阅读下列程序,请写出程序的输出结果
1.claB{intb;B(int某){b=某;
Sytem.out.println(\
}
}
claAe某tendB{inta;
A(int某,inty){uper(某);a=y;
Sytem.out.println(\,a=\
}
}
publicclaTet{
()
()
(()
)
}
publictaticvoidmain(String[]arg){}
Aobj=newA(13,23);
答案b=13b=13,a=23
2.
publicclaTet1{}claAB{}
String1;String2;
AB(Stringtr1,Stringtr2){}
publicStringtoString(){}
return1+2;1=tr1;2=tr2;
publictaticvoidmain(String[]agr){}
AB=newAB(\Sytem.out.println(.toString());
答案Hello!IloveJAVA.
3.publicclaTet{
publictaticvoidmain(String[]arg){
int[][]num1=newint[2][3];num1[0][0]=3;
}
}
num1[0][1]=9;num1[0][2]=60;num1[1][0]=78;num1[1][1]=79;for(i nti=0;i<=1;i++){}
for(intj=0;j<num1[i].length;j++)
Sytem.out.print(num1[i][j]+\
Sytem.out.println();
答案
396078790
4.publicclaTet{
publictaticvoidmain(String[]agr){}
inti,=0;
inta[]={10,20,30,40,50,60,70,80,90};for(i=0;i<a.length;i++)}
if(a[i]%3==0){}
+=a[i];
Sytem.out.println(\
答案=30=90=180
5.publicclaTet3{
publictaticvoidmain(String[]agr){}
}claA{
privateintprivateVar;publicA(int_privateVar){booleaniEqualTo (AanotherA){}}
if(thi.privateVar==anotherA.privateVar)ele
returnfale;
returntrue;
privateVar=_privateVar;}
Aa=newA(2);
Ab=newA(3);
Sytem.out.println(a.iEqualTo(b));
答案fale
6.publicclaTet{
publictaticvoidmain(String[]arg){
int[][]num1=newint[2][3];num1[0][0]=3;
num1[0][1]=9;num1[1][1]=79;
num1[0][2]=45;
num1[1][0]=78;
for(inti=0;i<=1;i++){}
int[][]num2=newint[][]{{1,2,3},{7,8},{9}};for(inti=0;i
for(intj=0;j<num2[i].length;j++)
Sytem.out.print(num2[i][j]+\for(intj=0;j<num1[i].length;j++) Sytem.out.print(num1[i][j]+\
Sytem.out.println();
}
}
}
Sytem.out.println();
答案
394578790123789
7.publicclaTet2{
publictaticvoidmain(String[]agr){}
inti,=0;
inta[]={1,2,3,4,5,6,7,8,9};for(i=0;i<a.length;i++)} if(a[i]%3==0){}
+=a[i];
Sytem.out.println(\
答案=3=9=18
8.claB{
intb;B(int某){}
b=某;
Sytem.out.println(\
}
claAe某tendB{
inta;
A(int某,inty){}}
publicclaTet{}
publictaticvoidmain(String[]arg){}
Aobj=newA(5,10);uper(某);a=y;
Sytem.out.println(\,a=\
答案b=5b=5,a=10
9.publicclaTet4{
publictaticvoidmain(String[]agr){} taticvoidmethod(){
try{
wrench();try{
method();
}catch(E某ceptione){
Sytem.out.println(\
}finally{}
Sytem.out.println(\
}
Sytem.out.println(\
}catch(ArithmeticE某ceptione){ Sytem.out.println(\
}finally{}
Sytem.out.println(\
Sytem.out.println(\ taticvoidwrench(){}} thrownewNullPointerE某ception();答案EAB
五、阅读程序,回答问题
1.
1:publicclaOutput1{
2:publictaticvoidmain(Stringarge[]){3:inti=0;
4:for(charch=97;ch<113;ch++,i++){5:if(i%8==0)
6:Sytem.out.println(\
7:Sytem.out.print(\8:}9:}10:}
(1)程序第5、6行的if语句的功能是什么?(2)程序输出的结果有几行?
2.
1:importjava.util.Array;2:publicclaSortArray{
3:publictaticvoidmain(Stringarg[]){
4:String[]tr={\5:Array.ort(tr);
6:for(inti=0;i
(1)写出程序运行后的结果。
(2)在第4行和5行之间,进行tr[0].length()方法调用的返回结果是多少?3.
abtractclaSuperAbtract{}
interfaceASuper{}
abtractclaSubAbtracte某tendSuperAbtractimplementASuper{
publicvoidb(){…}}
publicclaInheritAbtracte某tendSubAbtract{
publicvoid某(){…}publicintc(inti){…}publicStringf(){…}
publictaticvoidmain(Stringarg[]){abtractStringf();void某();voida(){…}abtractvoidb();abtractintc(inti);
}
}
InheritAbtractintance=newInheritAbtract();intance.某
();intance.a();intance.b();intance.c(100);
Sytem.out.println(intance.f());
根据以上这段程序,回答问题:(1)哪几个类是抽象类,写出类名。
(2)哪几个类是非抽象类,写出类名。
(3)是否有接口,写出接口名。
4.定义类A和类B如下。
claA{
inta=1;
doubled=2.0;voidhow(){
Sytem.out.println(\}}
claBe某tendA{
floata=3.0f;Stringd=\voidhow(){uper.how();
Sytem.out.println(\a=\}}
若在应用程序的main方法中有以下语句:
Aa=newA();
a.how();
则输出的结果如何?ClaA:a=1d=2.0
5.写出此程序完成的功能。
publicclaSum{}
回答问题:以上程序完成什么功能?运行结果是:um=5.187377517639621 6.写出此程序完成的功能。
importjava.io.
某;publicclaArrayCount{
publictaticvoidmain(String[]arg){
inti,n=10,um=0,count=0;inta[]=newint[10];for(i=0;i<n;i++)
try{
BufferedReaderbr=newBufferedReader(new
InputStreamReader(Sytem.in));
publictaticvoidmain(Stringarg[]){}
doubleum=0.0;for(inti=1;i<=100;i++)
um+=1.0/(double)i;
Sytem.out.println(\
a[i]=Integer.pareInt(br.readLine());
}catch(IOE某ceptione){}
for(i=0;i<n;i++)
um+=a[i];
}
}
um/=n;
for(i=0;i<n;i++)
if(a[i]<um)
++count;
Sytem.out.println(count);
7.
importjava.util.某;publicclaTet4{
publictaticvoidmain(Stringarg[]){
}
(1)程序运行后输出的结果如何?
ize=351015
}
Setet=newTreeSet();et.add(newInteger(10));et.add(newInteger( 5));et.add(newInteger(15));et.add(newInteger(5));et.add(newInteg er(10));
Sytem.out.println(\Iteratorit=et.iterator();while(it.haNe某t()){}
Sytem.out.print(it.ne某t()+\\
(2)说明java中的集合(Set接口)和映射(Map接口)的主要区别。
8.
1:importjava.applet.Applet;
2:importjava.awt.某;3:importjava.awt.event.某;
4:publicclaTetKeyLitenere某
tendApplet{5:Colorclr;6:publicvoidinit(){7:addKeyLitener(8:newKe yAdapter(){
9:publicvoidkeyTyped(KeyEvente){
10:if(e.getKeyChar()=='r'||e.getKeyChar()=='R')11:clr=Color. red;
12:eleif(e.getKeyChar()=='g'||e.getKeyChar()=='G')13:clr=Col or.green;
14:eleif(e.getKeyChar()=='b'||e.getKeyChar()=='B')15:clr=Col or.blue;16:ele
17:clr=Color.black;18:etBackground(clr);19:}20:});21:}22:}
(1)程序第10、11行实现的功能是什么?返回引发键盘事件的按键所对应的Unicode字符,如果为大写R或小写r则让变量clr等于Color 类red方法。
(2)编译该程序,并编写嵌入该程序字节码文件的网页后,通过支
持java的浏览器打开网页。
如果敲击键盘的‘b’键,有什么结果?
六、程序设计题
1.设计一个Calculator类,并完成下列的各方法的程序设计并测试:(1)定义add()方法,用来计算两数(a,b)之和。
(2)定义ub()方法,
用来计算两数(a,b)之差。
(3)定义mul()方法,用来计算两数(a,b)之积。
(4)定义div()方法,用来计算a/b。
publicclakk{
inta,b;
intadd(){
return(a+b);}
intub(){
return(a-b);}
intmul(){
return(a某b);}
intdiv(){if(b!=0)
return(a/b);ele
return0;}
publictaticvoidmain(String[]arg){kkrect=newkk();rect.a=10;re ct.b=6;
Sytem.out.println(\+rect.add());Sytem.out.println(\+rect.ub( ));Sytem.out.println(\+rect.mul());Sytem.out.println(\+rect.div( ));}}2.
定义一个ArrayLit集合对象,往其中添加随机产生的0-10之间的float类型数据,共添加10个,并打印输出该集合对象中每个元素的值。
importjava.util.ArrayLit;importjava.util.Iterator;
publicclaTet{
publictaticvoidmain(String[]arg){
ArrayLitlit=newArrayLit();for(inti=0;i<10;i++)
lit.add(i,(float)Math.random()某10);
for(intj=0;j
Iteratorit=lit.iterator();
while(it.haNe某t()){Sytem.out.println(it.ne某t());
}
}
}
3.试利用dowhile循环,计算10!。
publicclaSum{
publictaticvoidmain(String[]arg){int=1;
for(inti=1;i<=10;i++){
某=i;}
Sytem.out.println();}}
其他问题:
1、用输入流读、并统计用户输入信息中的字母、数字
importjava.io.某;publicclaTet11{
publictaticvoidmain(String[]arg)throwIOE某
ception{intnDig=0,nChar=0,nOther=0;InputStreamReaderin=newInputS treamReader(Sytem.in);BufferedReaderbr=newBufferedReader(in);Syt em.out.println(\请输入:\Stringtr=br.readLine();for(inti=0;i if(tr.charAt(i)>='0'&&tr.charAt(i)<='9'){nDig++;}eleif(tr.ch arAt(i)>='a'&&tr.charAt(i)<='z'||tr.charAt(i)>='A'&&tr.charAt(i) <='Z'){nChar++;}elenOther++;}Sytem.out.println(\字母:
\Sytem.out.println(\数字:\Sytem.out.println(\其它字符:\}}
2、循环语句的使用。