Java面向对象程序设计模拟试题3及答案.docx
《Java面向对象程序设计模拟试题3及答案.docx》由会员分享,可在线阅读,更多相关《Java面向对象程序设计模拟试题3及答案.docx(16页珍藏版)》请在冰豆网上搜索。
![Java面向对象程序设计模拟试题3及答案.docx](https://file1.bdocx.com/fileroot1/2023-8/14/ec26605e-9e93-4719-8a05-43ed752d5c1b/ec26605e-9e93-4719-8a05-43ed752d5c1b1.gif)
Java面向对象程序设计模拟试题3及答案
Java面向对象程序设计
模拟试题3
一、单项选择题(本大题共15小题,每小题1分,共15分)
1.JRE是指
A.Java开发工具B.Java虚拟机
C.Java运行环境D.Java编程接口
2.开发Java程序必须安装的软件是
A.JVMB.JDK
C.JRED.API
3.在Java中,short型变量所占的字节数是
A.1B.2
C.4D.8
4.下面代码段执行后,i、j的值分别为
inti=1,j=10;
do{
if(i++>--j)
continue;
}while(i<5);
System.out.println("i="+i+"j="+j);
A.i=6j=5B.i=5j=5
C.i=6j=4D.i=5j=6
5.给定下面代码段,程序运行结果是
publicclassMyClass{
privatestaticinta=100;
publicstaticvoidmodify(inta){
a=a+5;
}
publicstaticvoidmain(String[]args){
modify(a);
System.out.println(a);
}
}
A.100B.105
C.101D.95
6.执行下列程序段后foo的值为
Stringfoo="blue";
boolean[]bar=newboolean[1];
if(bar[0]){
foo="green";
}
System.out.println(foo);
A.""B.nullC.blueD.green
7.关于实例变量、静态变量、实例方法和静态方法,下面叙述不正确的是
A.实例方法可以访问实例变量和静态变量
B.静态方法不能访问实例变量
C.实例变量和静态变量都可以通过类名访问
D.静态方法只能访问静态变量
8.执行下列语句后输出的结果是
Strings="COMPUTER";
System.out.println(s.substring(3,6));
A.COMB.MPUC.PUTD.TER
9.下面程序运行结果为
classAnimal{
publicAnimal(){
System.out.println("Animal");
}
}
//Bird类是Animal的子类
publicclassBirdextendsAnimal{
publicBird(){
System.out.println("Bird");
}
publicstaticvoidmain(String[]args){
Birdb=newBird();
}
}
A.AnimalB.Bird
C.AnimalD.Bird
BirdAnimal
10.下面代码在运行时会产生什么异常
Strings="ABC";
System.out.print(s.charAt(3));
A.ArrayIndexOutOfBoundsException
B.IndexOutOfBoundsException
C.StringIndexOutOfBoundsException
D.NullPointerException
11.下列程序的输出结果为
importjava.io.IOException;
publicclassTest{
publicstaticvoidmethodA(){
thrownewIOException();
}
publicstaticvoidmain(String[]args){
try{
methodA();
}catch(IOExceptione){
System.out.println("CaughtException");
}
}
}
A.代码有编译错误B.输出“CaughtException”
C.输出“CaughtIOException”D.程序正常执行,没有任何输出
12.有下列一段代码,执行后输出结果为。
()
TreeSetmySet=newTreeSet<>();
mySet.add("one");
mySet.add("two");
mySet.add("three");
mySet.add("four");
mySet.add("one");
Iteratorit=mySet.iterator();
while(it.hasNext()){
System.out.println(it.next()+"");
}
A.onetwothreefourB.fourthreetwoone
C.fouronethreetwoD.onetwothreefourone
13.有下列一段代码,执行后输出结果为。
()
importjava.util.*;
publicclassSortOf{
publicstaticvoidmain(String[]args){
ArrayLista=newArrayList<>();
a.add
(1);
a.add(5);
a.add(3);
Collections.sort(a);
a.add
(2);
Collections.reverse(a);
System.out.println(a);
}
}
A.[1,2,3,5]B.[2,1,3,5]
C.[2,5,3,1]D.[1,3,5,2]
14.有如下类的定义,Inner类称为()。
publicclassOuter{
classInner{
publicvoidgo(){
System.out.print("hi");
}
}
}
A.匿名内部类B.局部内部类
C.成员内部类D.静态内部类
15.Runnable接口中定义的唯一方法是
A.run()B.start()
C.begin()D.sleep()
二、多项选择题(本大题共5小题,每小题2分,共10分)
16.下面选项哪些是合法的Java标识符
A.longStringWithMeaninglessName
B.$int
C.bytes
D.finalist
E.abstract
17.下面选项哪些表达式的值为12
A.33/2
B.3<2
C.3*4
D.3<<2
E.3*2^2
18.有下面的类定义,与aMethod()重载的方法有
publicclassMyClass{
publicfloataMethod(floata,floatb){
return0;
}
}
A.publicintaMethod(inta,intb){}
B.publicfloataMethod(floatx,floaty){}
C.publicfloataMethod(floata,floatb,intc){}
D.publicfloataMethod(inta,intb,intc){}
E.publicvoidaMethod(floata,floatb){}
19.下面叙述哪些是正确的
A.使用super可以在子类中调用父类被覆盖的方法
B.Object类是所有类的根类
C.抽象类中不可以定义非抽象方法
D.一个类可以实现多个接口
E.一个类可以继承多个类
20.已知4个类之间的关系如图1所示,Shape表示形状、Circle类表示圆、Rectangle表示矩形、Cylinder表示圆柱,图中箭头表示类的继承关系。
有下面Java代码:
Rectanglert=newRectangle();
Cylindercl=newCylinder();
Shapesh=rt;
图1Shape类的层次结构图
下列赋值语句中合法的有:
A.cl=sh;
B.sh=rt;
C.rt=cl;
D.cl=rt;
E.sh=cl;
三、填空题(本大题共10小题,每小题1分,共10分)
21.Java语言的字符型数据在内存中占的字节数是。
22.下面的if-else结构用条件运算符可写为___________________。
if(age>=16)ticketPrice=20;
elseticketPrice=10;
23.若允许成员可以被这个类本身、同一个包中的类以及该类的子类访问,应使用修饰符__________________。
24.要测试一个实例是否是某种类型的实例,使用运算符___________________。
25.如果变量被赋值后不允许修改,定义变量时应使用关键字_____________。
26.若要声明一个接口,使用的关键字是____________________。
27.若将一个字符串转换为boolean型值,应该使用什么方法___________。
28.如果需要将所定义的类保存在com.xxxy包中,应该使用的语句是_______________。
29.要指定一个方法是父类方法的覆盖,应使用________________注解。
30.要启动线程,应该调用线程对象的方法是___________________。
四、简答题(本大题共3小题,每小题5分,共15分)
31.什么是构造方法?
它有什么特点?
和普通方法之间的区别是什么?
什么时候类将有一个默认构造方法?
32.试说明super关键字和this关键字的含义及主要用途。
33.试说明Java异常处理的基本方法,thow和throws关键字有何不同?
五、程序分析题(本大题共4题,每小题5分,共20分)
34.写出下列程序的运行结果。
publicclassArrayDemo{
publicstaticvoidmain(String[]args){
int[]array={1,2,3,4,5};
printArray(array);
modify(array);
printArray(array);
}
staticvoidmodify(int[]a){
for(inti=0;ia[i]=a[i]*i;
}
staticvoidprintArray(int[]a){
for(inti=0;iSystem.out.print(a[i]+"\t");
System.out.println();
}
}
35.有下列程序:
publicclassCommandLineDemo{
publicstaticvoidmain(String[]args){
System.out.println("共有"+args.length+"个参数");
for(inti=0;iSystem.out.println(i+":
"+args[i]);
}
}
}
若使用下列命令执行程序,程序输出结果如何?
javaCommandLineDemo/D1024
36.写出下列程序的运行结果。
abstractclassAA{
abstractvoidcallme();
voidmetoo(){
System.out.println("AA'smetoo().");
}
}
classBBextendsAA{
voidcallme(){
System.out.println("BB'scallme().");
}
voidmetoo(){
System.out.println("BB'smetoo().");
}
}
publicclassAbstractTest{
publicstaticvoidmain(String[]args){
AAaa=newBB();
aa.callme();
aa.metoo();
}
}
37.给出并分析下列程序的运行结果。
publicclassTest{
publicstaticStringoutput="";
publicstaticvoidfoo(inti){
try{
if(i==1){
thrownewException();
}
output+="1";
}catch(Exceptione){
output+="2";
return;
}finally{
output+="3";
}
output+="4";
}
publicstaticvoidmain(String[]args){
foo(0);
foo
(1);
System.out.println("output="+output);
}
}
六、编程题(本大题共3小题,第38,39题各8分,第40题14分,共30分)
38.编写程序,计算下面级数之和:
39.编写一个方法,合并给定的两个数组,方法的声明格式如下:
publicstaticint[]arrayMerge(int[]a,int[]b)
例如,一个数组是{16,13,15,18},另一个数组是{29,36,100},返回的数组应该是{16,13,15,18,29,36,100}。
40.按照下面要求定义类和创建对象。
(1)定义一个名为Person的类,其中含有一个String类型的成员变量name和一个int类型的成员变量age,为该类定义一个名为speak的方法,在其中输出其name和age的值。
(2)为Person类定义一个带参数构造方法,通过给出姓名和年龄创建Person对象。
定义默认构造方法,在该方法中调用有参数构造方法,将人的姓名设置为“张三”,年龄设置为20。
(3)定义一个名为Employee类表示员工,它继承Person类,要求定义一个变量salary表示员工工资。
定义computeSalary(doublehours,intrate)方法计算员工工资,这里hours表示员工工作时间,rate表示每小时工资。
定义默认构造方法和带name、age和salary参数的构造方法。
Java面向对象程序设计
模拟试题3参考答案
一、单项选择题(本大题共15小题,每小题1分,共15分)
1.C2.B3.B4.D5.A
6.C7.C8.C9.C10.C
11.A12.C13.C14C15.A
二、多项选择题(本大题共5小题,每小题2分,共10分)
16.A,B,C,D
17.C,D
18.A,C,D
19.A,B,D
20.B,E
三、填空题(本大题共.10小题,每小题1分,共10分)
21.2个字节
22.ticketPrice=(age>=16?
20:
10)
23.protected
24.instanceof
25final
26.interface
27.Boolean.parseBoolean()
28.packagecom.xxxy;
29.@Override
30.start或者start()
四、简答题(本大题共3小题,每小题5分,共15分)
31.参考答案:
构造方法是类的一种特殊的成员方法,其方法名与类名相同。
特点是:
(1)没有返回值
(2)用new运算符调用(3)一个类可定义多个构造方法。
它与其他成员方法的不同:
(1)作用不同
(2)调用方式不同。
32.参考答案:
super可以用在子类中引用父类成员变量、成员方法及构造方法。
用下列方式引用成员变量:
super.成员变量名;引用父类成员方法:
super.成员方法名();引用父类构造方法:
super(参数表)。
this表示当前对象,用它可引用当前对象的成员变量、成员方法和构造方法。
this.成员变量名、this.方法名、this(参数表)。
33.参考答案:
Java异常处理基本方法是用try{}catch{}finally{}。
try块中是要执行的代码,catch块中捕获和处理异常,finally是最后执行的代码。
throw关键字用于明确抛出一个异常对象,它是一个语句。
throws关键字用于声明方法抛出异常,使得异常可被调用方法处理。
五、程序分析题(本大题共4题,每小题5分,共20分)
34.答案:
少一行扣1分
12345
0261220
35.答案:
少一行扣1分
共有2个参数
0:
/D
1:
1024
36.答案:
BB’scallme()有一行给3分,若多一行扣1分。
BB’smetoo()
37.答案:
output=13423缺少output=扣1分,结果中包含两个3给2分
六、编程题(本大题共3小题,第38,39题各8分,第40题14分,共30分)
38.本小题8分,参考答案如下:
publicclassSeriesSum{
publicstaticvoidmain(String[]args){
intn=1;
doublesum=0;
while(n<99){//2分
sum=sum+(double)n/(n+2);//4分
n=n+2;
}
System.out.println("sum="+sum);//2分
}
}
39.本小题8分,参考答案如下:
publicstaticint[]arrayMerge(int[]a,int[]b){//2分
intsize=a.length+b.length;
int[]result=newint[size];
for(inti=0;iresult[i]=a[i];
}
for(inti=a.length;iresult[i]=b[i-a.length];
}
returnresult;//2分
}
40本小题14分,参考答案如下:
publicclassPerson{
Stringname;
intage;
publicvoidspeak(){
System.out.println("姓名:
"+name);
System.out.println("年龄:
"+age);
}
}
publicclassEmployeeextendsPerson{
publicdoublesalary;//表示员工工资
//无参构造方法
publicEmployee(){
}
//带一个参数构造方法
publicEmployee(doublesalary){
this.salary=salary;
}
publicdoublecomputeSalary(inthours,doublerate){
//这里计算员工的工资
doublesalary=hours*rate;
returnthis.salary+salary;
}
}