Java面向对象程序设计模拟试题2及答案.docx
《Java面向对象程序设计模拟试题2及答案.docx》由会员分享,可在线阅读,更多相关《Java面向对象程序设计模拟试题2及答案.docx(14页珍藏版)》请在冰豆网上搜索。
Java面向对象程序设计模拟试题2及答案
Java面向对象程序设计
模拟试题2
一、单项选择题(本大题共15小题,每小题1分,共15分)
1.JVM是指
A.Java开发工具B.Java虚拟机
C.Java运行环境D.Java编程接口
2.Java字节码文件的扩展名是
A.cB.exe
C.javaD.class
3.在Java中,byte型变量所占的字节数是
A.1B.2
C.4D.8
4.给定下面代码段,输出j的值是多少
inti=1,j=0;
switch(i){
case1:
j+=6;
case2:
j+=1;
default:
j+=2;
}
System.out.println(j);
A.2B.6
C.7D.9
5.给定下面代码段,程序运行结果是
publicclassTest{
staticvoidleftshift(inti,intj){
i<<=j;
}
publicstaticvoidmain(String[]args){
inti=4,j=2;
leftshift(i,j);
System.out.println("i="+i);
}
}
A.i=1B.i=2
C.i=3D.i=4
6.执行下列程序段后a和b的值为
classAB{
inta,b;
publicvoidinit(intx){
a=x;
intb=5;
}
publicvoiddisplay(){
System.out.println("a="+a+"b="+b);
}
}
publicclassABTest{
publicstaticvoidmain(String[]args){
ABab=newAB();
ab.init(6);
ab.display();
}
}
A.a=5b=5B.a=0b=0
C.a=6b=5D.a=6b=0
7.下列程序段的运行结果为
int[][]x={{1,2},{3,4,5},{6,7,8,9}};
int[][]y=x;
System.out.println(y[2][1]);
A.3B.4C.6D.7
8.执行下列语句后输出的结果是
Strings="COMPUTER";
System.out.println(s.indexOf(‘M’));
A.0B.1C.2D.3
9.下面程序运行结果为
classAA{
AA(inta){
System.out.print(a);
}
}
classBBextendsAA{
BB(Strings){
super(88);
System.out.print(s);
}
}
publicclassConstructorDemo{
publicstaticvoidmain(String[]args){
BBb=newBB("hello");
}
}
A.该程序有编译错误B.88hello
C.hello88D.hello
10.下面程序运行结果为
classSuper{
publicinti=0;
publicSuper(Stringtext){
i=1;
}
}
publicclassSubextendsSuper{
publicSub(Stringtext){
super(“”);
i=2;
}
publicstaticvoidmain(String[]args){
Subsub=newSub("Hello");
System.out.println(sub.i);
}
}
A.该程序有编译错误B.编译成功输出0
C.编译成功输出1D.编译成功输出2
11.下面代码在运行时会产生什么异常
intm=100;
System.out.println(m/0);
A.ClassNotFoundExceptionB.MathException
C.ArithmeticExceptionD.NullPointerException
12.有下列一段代码,执行后输出结果为。
()
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]
13.如果要求其中不能包含重复的元素,使用哪种结构存储最合适?
()
A.CollectionB.List
C.SetD.Map
14一个类要具备什么条件才可以序列化?
()
A.继承ObjectStream类B.具有带参数构造方法
C.实现Serializable接口D.定义了writeObject()方法
15.Thread类的哪个方法用来使线程睡眠一段时间
A.run()B.start()
C.begin()D.sleep()
二、多项选择题(本大题共5小题,每小题2分,共10分)
16.下面选项哪些是合法的Java标识符
A.MyGame
B._isRight
C.2JavaProgram
D.Java-Virtual-Machine
E._$12ab
17.下面选项哪些是合法的对float变量的声明和赋值
A.floatfoo=-1;
B.floatfoo=1.0;
C.floatfoo=2.02f;
D.floatfoo=3.03d;
E.floatfoo=0x0123;
18.哪两个语句声明的数组能存放10个整型数
A.int[]foo;
B.intfoo[10];
C.Object[]foo;
D.intfoo[];
E.Objectfoo[10];
19.下面哪两个方法不能被子类覆盖?
A.finalvoidmethodA(){}
B.voidfinalmethodA(){}
C.staticvoidmethodA(){}
D.staticfinalvoidmethodA(){}
E.finalabstractvoidmethodA(){}
20.已知4个类之间的关系如图1所示,Shape表示形状、Circle类表示圆、Rectangle表示矩形、Cylinder表示圆柱,图中箭头表示类的继承关系。
有下面Java代码:
Rectanglert=newRectangle();
Cylindercl=newCylinder();
Shapesh=rt;
图1Shape类的层次结构图
关于上述Java代码中sh和rt的以下叙述中,正确的有
A.sh和rt分别引用同一类型的不同的对象;
B.sh和rt分别引用同一个对象;
C.sh和rt分别引用不同类型的不同对象;
D.sh和rt分别引用同一个对象的不同拷贝;
E.sh和rt所引用的内存空间是相同的。
三、填空题(本大题共10小题,每小题1分,共10分)
21.main()方法的返回值类型是。
22.在命令提示符环境下,要运行HelloWorld字节码文件,使用的命令是。
23.执行下列语句后输出的结果是___________。
Strings="\"Hello,World!
\"";
System.out.println(s.length());
24若在子类构造方法中调用父类的无参数构造方法,使用的语句是_____________。
25.如果不允许方法被子类覆盖,定义方法时应使用关键字_____________。
26.要声明一个接口,应该使用关键字________________。
27.若将一个数字字符串转换为int型值,应该使用什么方法____________________。
28.设a是父类A的一个实例,b是A的子类B的一个实例,语句a=b;是自动转换还是强制转换_______________。
29.定义同步的方法应该使用关键字___________________。
30.Runnable接口中定义的唯一方法是___________________。
四、简答题(本大题共3小题,每小题5分,共15分)
31.简述Java语言有哪几种基本数据类型和引用数据类型。
32.试说明实例变量和类(静态)变量的主要区别,实例方法和类(静态)方法的区别。
33.试说明抽象类和接口的相同之处和不同之处。
五、程序分析题(本大题共4题,每小题5分,共20分)
34.写出下列程序的运行结果。
publicclassAnimal{
publicintage;
publicAnimal(inta){
age=a;
}
publicAnimal(){
age=1;
}
}
publicclassTest{
publicstaticvoidincrement(intvalues,Animalanimal){
values++;
animal.age++;
}
publicstaticvoidmain(String[]args){
AnimalmyDog=newAnimal();
intvalues=10;
for(inti=0;i<10;i++)
increment(values,myDog);
System.out.println(values);
System.out.println(myDog.age);
}
}
35.写出下列程序的运行结果。
publicclassArrayDemo{
publicstaticvoidmain(String[]args){
inta[][]=newint[4][];
a[0]=newint[1];
a[1]=newint[2];
a[2]=newint[3];
a[3]=newint[4];
inti,j,k=0;
for(i=0;i<4;i++)
for(j=0;j
a[i][j]=k;
k++;
}
for(i=0;i<4;i++){
for(j=0;j
System.out.print(a[i][j]+"");
System.out.println();
}
}
}
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.给出下列程序的运行结果。
publicclassMultiExceptionDemo{
staticStrings="";
publicstaticvoidmethod(intsel){
try{
if(sel==0){
s=s+"A";
return;
}elseif(sel==1){
inti=0;
System.out.println(4/i);
}elseif(sel==2){
intiArray[]=newint[4];
iArray[4]=10;
}
}catch(ArithmeticExceptione){
s=s+"B";
}catch(ArrayIndexOutOfBoundsExceptione){
s=s+"C";
}catch(Exceptione){
s=s+"D";
}finally{
s=s+"E";
}
}
publicstaticvoidmain(String[]args){
method(0);
method
(1);
method
(2);
System.out.println(s);
}
}
六、编程题(本大题共3小题,第38,39题各8分,第40题14分,共30分)
38.编程打印输出Fibonacci数列的前20个数。
Fibonacci数列是第一和第二个数都是1,以后每个数是前两个数之和,用公式表示为:
f1=f2=1,fn=fn-1+fn-2(n>=3)。
要求使用数组存储Fibonacci数。
39.编写一个方法,将十进制数转换为二进制数的字符串,方法签名如下:
publicstaticStringtoBinary(intvalue)
例如,按如下调用该方法将输出101010.
System.out.println(toBinary(42));
40.按照下面要求定义类和创建对象。
(1)定义一个名为Circle的类表圆,其中含有double型的成员变量centerX、centerY表示圆心坐标,radius表示圆的半径。
定义求圆面积的方法getArea()方法和求圆周长的方法getPerimeter()。
(2)定义一个带参数构造方法,通过给出圆的半径创建圆对象。
定义默认构造方法,在该方法中调用有参数构造方法,将圆的半径设置为1.0。
(3)定义一个名为Cylinder类表示圆柱,它继承Circle类,要求定义一个变量height表示圆柱高度。
定义getVolume()方法求圆柱体积。
定义默认构造方法和带radius和height两个参数的构造方法。
Java面向对象程序设计
模拟试题2参考答案
一、单项选择题(本大题共15小题,每小题1分,共15分)
1.B2.D3.A4.D5.D
6.D7.D8.C9.B10.D
11.C12.B13.C14C15.D
二、多项选择题(本大题共5小题,每小题2分,共10分)
16.A,B,E
17.A,C,F
18.A,D
19.A,D
20.B,E
三、填空题(本大题共.10小题,每小题1分,共10分)
21.void
22.javaHelloWorld
23.14
24.super或super()
25final
26.interface
27.Integer.parseInt()或Integer.parseInt
28.自动类型转换
29.setSize()或setSize
30.run或run()
四、简答题(本大题共3小题,每小题5分,共15分)
31.参考答案:
基本数据类型包括字节型(byte)、短整型(short)、整型(int)、长整型(long)、布尔型(loolean)、字符型(char)、单浮点型(float)和双浮点型(double)。
引用数据类型包括类(class)、数组、抽象类、接口。
32.参考答案:
没有使用static修饰的成员称为实例成员,使用static修饰的成员称为类成员。
实例成员必须使用实例变量访问,类成员属于类,既可以通过类名访问,也可以通过对象名访问。
33.参考答案:
相同之处:
(1)都包含抽象方法
(2)都不能被实例化(3)都是引用数据类型。
不同点如下:
(1)一个类只能继承一个类,一个类可实现多个接口
(2)抽象类访问权限同普通类,接口访问权限有public和默认,成员访问权限是public(3)抽象类可抽象方法、普通方法、构造方法,接口只能声明抽象方法和常量。
五、程序分析题(本大题共4题,每小题5分,共20分)
34.答案:
缺少一个数扣1分。
10
11
35.答案:
若答案格式与结果不同,扣1分,缺少行可酌情扣分。
0
12
345
6789
36.答案:
BB’scallme()有一行给3分,若多一行扣1分。
BB’smetoo()
37.答案:
若答案格式与结果不一致,可酌情扣分。
AEBECE
六、编程题(本大题共3小题,第38,39题各8分,第40题14分,共30分)
38.本小题满分8分,参考程序如下:
publicclassFibonacci{
publicstaticvoidmain(String[]args){
longf1=1,f2=1;
for(inti=1;i<10;i++){
System.out.print(f1+""+f2+"");
f1=f1+f2;
f2=f1+f2;
}
}
}
39.本小题满分8分,参考程序如下:
publicstaticStringtoBinary(intvalue){
Strings="";
while(value!
=0){
intr=value%2;//反复除以2取余数
s=r+s;
value=value/2;
}
returns;
}
40本小题满分14分,参考程序如下:
参考程序如下:
publicclassCircle{
doublecenterX;
doublecenterY;
doubleradius;
publicCircle(){//4分
this(1.0);
}
publicCircle(doubleradius){
this.radius=radius;
}
publicdoublegetArea(){//4分
doublearea=3.14*radius*radius;
returnarea;
}
publicdoublegetPerimeter(){
doubleperimeter=2*3.14*radius;
returnperimeter;
}
}
publicclassCylinderextendsCircle{//6分
privatedoubleheight;
publicCylinder(){}
publicCylinder(doubleradius,doubleheight){
this.radius=radius;
this.height=height;
}
publicdoublegetVolume(){
returnsuper.getArea()*height;
}
}