Java面向对象测试汇编.docx
《Java面向对象测试汇编.docx》由会员分享,可在线阅读,更多相关《Java面向对象测试汇编.docx(16页珍藏版)》请在冰豆网上搜索。
Java面向对象测试汇编
Java基础知识单元测试
一、选择题(30分)
1.下列程序段执行后的输出结果为( )
intx=3;inty=10;
System.out.println(y%x);
A.0
B.1
C.2
D.3
2.下列程序的输出结果是 ( )
publicclassTest
{
voidprintValue(intm)
{
do{
System.out.println("Thevalueis"+m);
}while(--m>10);
}
publicstaticvoidmain(Stringarg[])
{
inti=10;
Testt=newTest();
t.printValue(i);
}
}
A.8
B.9
C.10
D.113
3.执行完语句int[]x=newint[25];后,则下列哪项说法是正确的( )
A.x[24]值为0
B.x[24]值未定义
C.x[25]值为0
D.x[0]值为空
4.下列哪个选项是合法的标识符 ( )
A)123
B)_name
C)class
D)1first
5.下列的哪个赋值语句是不正确的 ( )
A)floatf=11.1;
B)doubled=5.312;
C)floatd=3.14f;
D)doublef=11.110f;
6.下列关于继承的哪项叙述是正确的?
( )
A)在java中允许多重继承
B)在java中一个类只能实现一个接口
C)在java中一个类不能同时继承一个类和实现一个接口
D)java的单一继承使代码更可靠
7.有一个类A,对于其构造函数的声明正确的是()。
A)voidA(intx){...}B)A(intx){...}
C)AA(intx){...}D)intA(intx){...}
8.一个可以独立运行的Java应用程序( )
A、可以有一个或多个main方法
B、最多只能有两个main方法
C、可以有一个或零个main方法
D、只能有一个main方法
9.以下对Java中对数组的声明正确的是()
Aint[]sample;
Bintsample[];
Cint()sample;
Dintsample();
10.设intx=3,y=2,z=5;
则表达式y+=z--/++x的值是()。
A.3
B.4.5
C.3.5
D.4
11.类Test1定义如下:
(1)publicclassTest1{
(2)publicvoidaMethod(floata,floatb){};
(3)
(4)}
将以下哪种方法插入第3行是不合理的?
( )
A.publicvoidaMethod(inta,intb){};
B.publicvoidaMethod(floata,floatb,floatc){};
C.publicvoidaMethod(floatc,floatd){};
D.privatevoidaMethod(inta,intb,intc){};
12.JDK中运行Java小程序的命令是()。
A.javadocB.appletviewer
C.javacD.Java
13.下列叙述中,正确的是:
()
A声明变量时必须指定一个类型B、Java认为变量number和Number相同
C、Java中唯一的注释方式是“//”D、源文件中public类可以有0或多个
14.在switch(expression)语句中,expression的数据类型不能是:
A、doubleB、charC、byteD、short
15.已知int[]a=newint[100];,在下列给出的数组元素中,非法的是:
A、a[0]B、a[1]C、a[99]D、a[100]
16.设x,y均为已定义的类名,下列声明对象x1的语句中正确的是()。
A、publicxx1=newy();B、xx1=x();
C、xx1=newx();D、intxx1;
17.Java语言的类间的继承关系是()。
A、多重的B、单继承C、线程的D、不能继承
18.下面关于java中类的说法哪个是不正确的()
A、类体中只能有变量定义和成员方法的定义,不能有其他语句。
B、构造函数是类中的特殊方法。
C、类一定要声明为public的,才可以执行。
D、一个java文件中可以有多个class定义(但只能有一个Public修饰的类)。
19.给出一段程序,选择运行结果()
publicclasssss{
publicstaticvoidmain(Stringargs[])
{
Strings1=args[1];Strings2=args[2];
Strings3=args[3];Strings4=args[4];
System.out.println(“args[2]=”+s2);
}
}
命令行执行:
javasss1234结果是下面哪一个?
A、args[2]=2B、args[2]=nullC、args[2]=3D、运行出现异常
20.publicclassT1{
publicstaticvoidmain(String[]args){
T1a=newT1();
a.method(8);
a.method(1.2f);
}
voidmethod(floati){
System.out.println("float:
"+i);
}
voidmethod(longi){
System.out.println("long:
"+i);
}
}
A、程序有编译错误,因为两个method()方法必须定义为静态(static)的。
B、程序可以编译运行,输出结果为:
long:
8
float:
1.2
C、程序可以编译运行,输出结果为:
float:
1.2
long:
8
D、程序中定义的两个参数不同的method方法称为方法重载。
21.编译并运行下面的程序,运行结果为().
publicclassA{
publicstaticvoidmain(String[]args){
Aa=newB();
a.test();
}
voidtest() {
System.out.print("A");
}
}
classBextendsA{
voidtest(){
super.test();
System.out.println("B");
}
}
A、子类B定义了与父类A中同名的方法test,java中称为方法的覆盖。
B、代码可以编译运行,并输出结果:
AB
C、代码可以编译运行,并输出结果:
A。
D、子类B定义了与父类A中同名的方法test,java中称为方法的重载
22.面向对象的特征有哪些()
A、封装。
B、抽象。
C、继承。
D、多态
E、跨平台
23.类的设计要求它的某个成员变量不能被外部类直接访问。
应该使用下面的哪些修饰符获得需要的访问控制?
A、public
B、nomodifier
C、protected(权限仅次于public)
D、private
24.类Teacher和Student都是类Person的子类
Personp;
Teachert;
Students;
p,tandsareallnon-null.
if(tinstanceofPerson){s=(Student)t;}
这个语句导致的结果是什么?
A、将构造一个Student对象。
B、表达式合法。
C、编译时非法。
D、编译时合法而在运行时可能非法。
25.给出下面的代码:
classPerson{
Stringname,department;
publicvoidprintValue(){
System.out.println("nameis"+name);
System.out.println("departmentis"+department);
}
}
publicclassTeacherextendsPerson{
intsalary;
publicvoidprintValue(){
//doingthesameasintheparentmethodprintValue()
//includingprintthevalueofnameanddepartment.
System.out.println("salaryis"+salary);
}
}
下面的哪些表达式可以加入printValue()方法的"doingthesameas..."部分?
A、printValue();
B、this.printValue();
C、person.printValue();
D、super.printValue().
26.以下是接口的定义的是:
A,接口中定义的变量都是公共的静态变量
B,没有构造函数,而且定义的方法都是公共的抽象方法
C,接口间采用单继承机制
D,接口可以实例变量和常量,实例常量语法是;publicstatic标示符名称
27.包含抽象方法的类:
A,一定是抽象类
B,可以是抽象类也可以不是抽象类
C,肯定不是抽象类
28.那些父类成员不能被继承:
A,private成员
B,构造方法
C,public成员
D,getter和setter成员
29.方法重写规则:
A,在继承关系的子类中
B,重写的方法名,返回值类型,参数与父类不相同
C,私有属性,成员可以被重写
30.关于构造方法,下列说法错误的是()
A,构造方法可以进行方法重写
B,构造方法用来初始化该类的一个新对象
C,构造方法具有和类名相同的名称
D,构造方法不返回任何数据类型
2、程序分析题(16分)
1.设有数组定义:
inta[]={11,22,33,44,55,66,77,88,99};
则执行下列几个语句后的输出结果是
for(inti=0;iif(a[i]%3==0)
System.out.println(a[i]+"");
2.执行下列几个语句后的输出结果是
class FatherClass{
publicFatherClass(){
System.out.println("FatherClassCreate");
}
}
publicclass ChildClassextendsFatherClass{
publicChildClass() {
System.out.println("ChildClassCreate");
}
publicstaticvoidmain(String[]args) {
FatherClassfc=newFatherClass();
ChildClasscc=newChildClass();
}
}
3.应用程序由以下语句组成,写出执行该程序后输出的结果
publicclassx{
publicstaticvoidmain(Stringargs[]){
inti,sum=0;
inta[]={1,2,3,4,5,6};
for(i=0;iif(a[i]%2==0)
sum+=a[i];
System.out.println("sum="+sum);
}
}
4.应用程序由以下语句组成,写出执行该程序后输出的结果
import java.io.*;
public class A
{
public static void main(String args[])
{inti;
inta[]={10,20,30,40,50,60,70,80,90};
for(i=0;i<=a.length/2;i++)
System.out.print(a[i]+a[a.length-i-1]+" ");
}
}
5.应用程序由以下语句组成,写出执行该程序后输出的结果
publicclassx
{
publicstaticvoidmain(Stringargs[])
{
intnum=0;
for(inti=10;i<=50;i++)
if(i%10==5&&i%3==0)
num++;
System.out.println("共有"+num+"个");
}
}
6.应用程序由以下语句组成,写出执行该程序后输出的结果
publicclassJtest
{
intm=1;
inti=3;
voidJtest()
{
m=2;
i=4;
}
publicstaticvoidmain(String[]args)
{
Jtestapp=newJtest();
System.out.println(app.m+","+app.i);
}
}
7.应用程序由以下语句组成,写出执行该程序后输出的结果
publicclassJtest
{
intm=1;
inti=3;
Jtest()
{
m=2;
i=4;
}
publicstaticvoidmain(String[]args)
{
Jtestapp=newJtest();
System.out.println(app.m+","+app.i);
}
}
8.请写出程序的运行结果
classTester{
intvar;
Tester(doublevar){
this.var=(int)var;
}
Tester(intvar){
this("hello");
}
Tester(Strings){
this();
System.out.print(s);
}
Tester(){
System.out.print("goodbye");
}
publicstaticvoidmain(String[]args){
Testert=newTester(5);
}
}
3、填空题(4分)
1.在Java程序中,通过类的定义只能实现单继承,但通过 的定义可以实现多继承关系。
2.数组x定义如下intx[][]=newint[3][2]
则x.length的值为____________,x[0].length的值为____________。
4、改错题(8分)
1.abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}
2.public class Something {
void do () {
private String s = "";
int i= s.length();
}
}
3.public class x{
public int add(final int i) {
return ++i;
}
}
4.此处,Something类的文件名叫Other.java
publicclass Something {
private static void main(String[] something_to_do) {
System.out.println("Do something ...");
}
}
5、简答题(12分)
1.简答方法的OverLoad和Override区别。
2.简答Java实现多态的手段。
3.简答this和super的用法。
4.简答类成员和实例成员的区别
5.一个".java"源文件中是否可以包括多个类?
有什么限制?
6、局部变量和成员变量的区别
6、判断题(10分)
1.Java程序里,创建新的类对象用关键字new。
2.对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。
3.有的类定义时可以不定义构造函数,所以构造函数不是必需的。
4.类及其属性、方法可以同时有一个以上的修饰符来修饰。
5.抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。
6.Final类中的属性和方法都必须被final修饰符修。
7.最终类不能派生子类,最终方法不能被覆盖。
8.子类要调用父类的方法,必须使用super关键字。
9.一个Java类可以有多个父类。
10.方法覆盖必须要方法原型相同,可以不需要继承
七、编程题(4+5+6+5=20分)
1.求1!
+2!
+3!
+…+10!
2.数组题:
键盘随机输入十个数,以降序形式排列,打印排列后的数字。
3.编写一个java程序,设计一个汽车类Vechile,包含的属性有车轮数和车重,小汽车Car是它的子类,其中的属性包含载人数,卡车Truck是Car的子类,其属性包含载重量payload。
每个类都有构造方法和输出相关信息的方法。
4.编写简易的计算器,实现加减乘除,要求声明Operation类(或接口),AddOperation加法类SubOperation减法类MulOperation乘法类DivOperation除法类,编写测试类Test实现加减乘除运算。