《面向对象技术Java-期末复习试卷(三)(共17页).doc》由会员分享,可在线阅读,更多相关《面向对象技术Java-期末复习试卷(三)(共17页).doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上期末复习试卷(三)一、 单项选择题1、有一段java应用程序,其中包含一个公共类,名字为TestStudent,那么保存它的源文件名是( ) A. teststudent.java B. teststudent .class C. TestStudent.java D. TestStudent.class 正确答案:C 解析:一个java文件中可以包含多个类,但最多只能有一个类是公共类(public),该java文件的名字要与公共类的一致。2、关于下面的代码,哪个描述是正确的?public class Test public static void main(Stri
2、ng args) Integer n1 = new Integer(3); Object n2 = new Integer(4); System.out.println(pareTo(n2); A. 可以编译通过,可以运行,并得到预期结果。 B. 可以编译通过,可以运行,但不能得到预期结果。 C. 可以编译通过,但又运行错误。 D. 有编译错误。 正确答案:D 解析:Integer类是基本数据类型int的包装类,里面封装了一个int类型的值,提供了一些实用的方法(例如:在JavaFX中读取文本框内容是String类型的,如果要转换成int类型,就要调用Integer类的parseInt()方法
3、)并实现了Comparable接口,在Comparable接口中定了抽象方法compareTo(T o), T是泛型,对于Integer类,T被替换为Integer,如下图: 因此,Integer类中compareTo()方法的定义如下:因此,compareTo的参数只能是Integer类型的,所以代码中的下面语句中的n2的类型需要进行强制类型转换,由Object转为Integer:System.out.println(pareTo(n2);正确写法如下: System.out.println(pareTo(Integer) n2); 类似的包装类还有LongFloatDoubleCharBo
4、olean等,都是将基本数据类型包装为类。3、下面哪种类型不是引用数据类型?( ) A. 数组 B. char C. String D. Object 正确答案:B 解析:基本数据类型只是存放数据,不提供功能(即方法)包括4类八种: 布尔类型:boolean 字符类型:char 整数类型:byte, short, int, long 浮点类型:float,double引用数据类型包括类、接口、抽象类、数组(本质上是类),引用类型可以提供功能。注意:String是一个类,所以可以使用String s = new String(bistu)的方式创建对象;数组也是一个类,所以需要用new创建对象。
5、4、类Test要定义一个无参数、无返回值的方法method,并能够通过Test.method()的方式调用method方法,则method方法的定义形式为 ( )。 A. public static void method ( ) B. public void method ( ) C. public final void method ( ) D. public abstract void method ( ) 正确答案:A 解析:静态方法(也叫类方法)可以不创建对象,而直接通过类名调用。5、下列关于接口说法正确的是 ( )。 A. 抽象类中的方法不全都是抽象的,因此可以创建对象。 B. 接
6、口的引用既可以调用实现类重写的接口的方法,也可以调用实现类新增的方法。 C. 接口的实现类可以实现接口的部分方法。 D. 接口的方法都是抽象的,因此不可以创建对象。 正确答案:D 解析:选项A的前半句是对的,后半句错了。选项B前半句是对的,后半句不对。示例如下: public interface GeometricObjectpublic double getArea();public class Circle implements GeometricObjectpublic double getArea() . public double getPerimeter() public Test
7、Circlepublic static void main(String args)GeometricObject c = new Circle();c.getArea(); /访问实现类覆盖接口的方法可以c. getPerimeter() /错误:不可以访问实现类新增的方法 选项C错误,实现类必须实现接口的所有的抽象的方法。6、将类的成员方法的访问权限设置为默认的,则该成员方法能被( )。 A. 同一包中的类访问 B. 其他包中的类访问 C. 所有的类访问 D. 所有的类的子类访问 正确答案:A 解析:注意本题可以继续扩展,例如把访问权限换成public/private/protected。
8、7、下列哪个是Java应用程序主类中正确的main方法声明? ( ) A. public void main(String args) B. static void main(String ar) C. public static void Main(String a) D. public static void main(String args) 正确答案:D 8、有一段java应用程序,其中包含一个公共类,名字为Cat,那么保存它的源文件名是( ) A. Cat.java B. Cat.class C. Cat D. 都对 正确答案:A 与第1个选择题类似。9、下列哪个是JDK提供的编译器
9、?( ) A. java.exe B. javac.exe C. javap.exe D. javaw.exe 正确答案:B 10、某个源文件如下:public class TestPersonclass Personclass Student extends Person那么保存它的源文件名是( ) A. TestPerson.java B. Person.java C. Student.java D. TestPerson.class 正确答案:A 参考第1、8题。11、以下定义一位数组的语句中,正确的是( ) A. int a5; B. int a =new 5; C. int a;in
10、t a = new int5; D. int a = 1,2,3,4,5; 正确答案:D 选项A: java中的数组是类,需要使用new关键字创建。选项B:落类型了,正确写法为 int a = new int5;选项C:重复定义变量a,正确写法: int a; a = new int5;12、String类实现Comparable接口,覆盖其中的compareTo()方法。下面哪个是正确的String类中被重写的compareTo()方法的方法头? A. public int compareTo(String o) B. public void compareTo(String o) C. p
11、ublic int compareTo(Object o) D. public void compareTo(Object o) 正确答案:A 解析:Comparable接口的定义如下:接口的实现类必须覆盖在接口中定义的抽象的方法,覆盖就意味在实现类中的方法要与在接口中定义的抽象方法同名、同参、同返回值。13、将类的某个成员方法的访问权限设置为protected的,则下面说法正确的是( )。 A. 同一包中的其他类不可以访问该方法 B. 不同包中的子类可以访问该方法 C. 所有包中的类都可以访问该方法 D. 所有包中的类都不可以访问该方法。 正确答案:B 14、下列哪一个类声明是错误的?( )
12、 A. class A B. public class A C. protected class A D. public abstract class A 正确答案:C 解析:类只能被默认或者public修饰符修饰,这是与成员变量和成员方法不一样的地方。15、下面关于数组和集合的说法,哪一个是错误的?( ) A. 数组的长度一旦确定,不能修改; B. 集合的长度可变,但是效率比数组低; C. 数组和集合都属于引用类型; D. 数组使用泛型指明所存储的对象的类型。 正确答案:D 解析:ArrayList是集合的一种类型。集合使用泛型指明所存储的对象的类型。16、下面代码有错误的行是:_。1: p
13、ublic class Review13072: public static void main(String args)3: Number x = new Integer(3);4: System.out.println(x.intValue();5: System.out.println(pareTo(new Integer(4);6: 7: A. line 2 B. line 3 C. line 4 D. line 5 正确答案:D 解析:(1) 查JDK帮助文档,Number是Integer的父类,Number没有实现Comparable接口,而子类Integer实现了Comparab
14、le接口,即子类Integer新增了compareTo()方法。(2) x的声明类型是Number,实际类型是Integer,根据父类引用不能调用子类新增的方法的原则,x不可以直接调用compareTo()方法。(3) 如果需要修改代码中的错误,可以进行强制类型转换,如下:System.out.println(Integer)x).compareTo(new Integer(4);17、inta = 1,4,7,2,5,6,0,该数组第1个和最后1个元素的下标为哪一项? ( ) A. 0,7 B. 1,6 C. 0,6 D. 1,7 正确答案:C 18、假设arr是一个int类型的二维数组,下
15、面关于arr的声明和初始化,哪一项是错误的?( ) A. int arr = 1,2,3,4,5; B. int arr = new int23; C. int arr = new int2; D. int arr = new int3; 正确答案:D 解析:Java的二维数组是由一维数组模拟的,示例如下: 没有第一维,就不会有第二维,所以,创建数组的时候,不能只指明第二维,不指明第一维。但可以仅指明第一维,不指明第二维,如选项C。19、下面说法哪一个是错误的?( ) A. 构造方法的名称与类名一样。 B. 构造方法返回值可以为void。 C. 一个类可以有多个构造方法。 D. 在一个类中可以
16、使用this调用该类的其他构造方法。 正确答案:B 解析:构造方法的作用是创建对象,因此,本质上,构造方法是有返回值的,其返回值就是它创建的对象。但是,由于即使不指明构造方法的返回值,JDK也知道其返回值类型,因此,构造方法的返回值类型省略掉了。但是绝对不能用void,void表示没有返回值。20、下面关于接口的定义哪个是正确的? A. interface A void print() ; B. abstract interface A extends I1,I2 abstract void print(); C. abstract interface A print(); D. interf
17、ace A void print(); 正确答案:D 解析:(1)interface前面没有abstract修饰; (2)接口中的方法都是抽象的,因此不能有方法体,即。21、下面关于多态的说法,正确的是( )。 A. 一个类中不能有同名的方法; B. 子类中不能有和父类中同名的方法; C. 子类中可以有和父类中名字相同,且参数相同的方法; D. 多态性就是方法的名字和参数可以一样,但返回值的类型必须不一样。 正确答案:C 22、用于定义类成员的访问控制权的一组关键字是( ) A. class, float, double, public B. float, boolean, int, long
18、 C. char, extends, float, double D. public, private, protected 正确答案:D 23、下面关于接口的说法哪一条是错误的?( ) A. 接口是一种特殊的抽象类,接口的方法都是抽象方法; B. 类可以实现接口; C. 接口和子接口可以有自己的实例对象; D. 可以使用接口声明引用,引用实现本接口或子接口的类的对象。 正确答案:C 解析:接口中的方法都是抽象的,不能创建实例;类似的,抽象类也不可以创建实例。24、下面关于抽象类的说法,哪一条是错误的?( ) A. 抽象类可以不包含抽象方法; B. 一个类只要有一个抽象方法,就是抽象类; C.
19、 抽象类不能创建对象,创建对象的工作由抽象类的具体子类来实现; D. 对于抽象类中的抽象方法来说,在抽象类中既要指定方法名和参数,又要指定实现代码。 正确答案:D 解析:抽象方法没有方法体,因此不可能有实现代码。25、Java源程序经过编译后得到的类文件的扩展名是哪一个项?( ) A. java B. exe C. class D. html 正确答案:C 26、Worker类是Person类的子类,Worker的构造方法中有一句super(),该语句是( )。 A. 调用Person类中定义的super()方法 B. 语法错误 C. 调用Person类的构造方法 D. 调用Worker类中定
20、义的super()方法 正确答案:C 27、关于覆盖和重载,下面说法哪一个是错误的?( ) A. 一个类中包含多个同名但参数不同的方法,这些方法构成了重载。 B. 普通的成员方法可以重载,但构造方法不可以重载。 C. 如果在子类中定义的方法与其父类的某个方法具有相同的名称、参数和返回值,则称子类的方法覆盖了父类的方法。 D. 当父类的方法不能满足子类的要求时,子类可覆盖父类的方法;当一种功能有多种实现时,可使用重载来提供多个同名不同参的方法。 正确答案:B 解析:构造方法也可以重载,即一个类可以有多个构造方法。28、下面的代码说明类A和类B之间是什么关系?( )class A class B
21、extends A A. 关联 B. 继承 C. 依赖 D. 实现 正确答案:B 29、下面代码的错误出现在_。1: public class Review13082: public static void main(String args)3: Number x = new Integer(3);4: System.out.println(x.intValue();5: System.out.println(Integer)pareTo(new Integer(4);6: 7: A. line 2 B. line 3 C. line 4 D. line 5 正确答案:D 30、下列关于继承的
22、概念,哪项叙述是正确的?( ) A. 在java中,允许一个类继承多个父类; B. 在java中,一个类只能实现一个接口; C. 在java中,一个类不能同时继承一个类和实现一个接口; D. java的单一继承使代码更可靠。 正确答案:D 解析:Java采用单继承,即只能有一个父类,但可以实现多个接口。二、 程序题1、GeometricObject是几何图形抽象类,Circle类继承了GeometricObject类,同时实现了Comparable<Circle>接口,三者的UML类图如下: 提示:Comparable<T>接口在java.lang包中已经定义,不需要自
23、己写。解题要求:编写测试类,要求如下:(1)创建Circle类的对象c1和c2,设定c1的半径为5,c2的半径为6。(2)输出c1和c2的半径;c1的周长和面积;调用c1的compareTo(Circle o) 方法与c2比较,输出比较结果。(3)将c1的半径改为8,按照(2)中的要求输出信息。(4)将c1的半径改为6,按照(2)中的要求输出信息。样例如下package qiZhongKaoShi2;public class TestCircleComparable public static void main(String args)Circle c1 = new Circle(5);Ci
24、rcle c2 = new Circle(6);System.out.println(c1的半径是 + c1.getR();System.out.println(c2的半径是 + c2.getR();System.out.println(c1的周长是 + c1.getPerimeter();System.out.println(c1的面积是 + c1.getArea();if (pareTo(c2)=1)System.out.println(c1比c2大);else if (pareTo(c2)=-1)System.out.println(c1比c2小);else System.out.pri
25、ntln(c1与c2相等);System.out.println();c1 = new Circle(8);System.out.println(c1的半径是 + c1.getR();System.out.println(c2的半径是 + c2.getR();System.out.println(c1的周长是 + c1.getPerimeter();System.out.println(c1的面积是 + c1.getArea();if (pareTo(c2)=1)System.out.println(c1比c2大);else if (pareTo(c2)=-1)System.out.print
26、ln(c1比c2小);else System.out.println(c1与c2相等);System.out.println();c1 = new Circle(6);System.out.println(c1的半径是 + c1.getR();System.out.println(c2的半径是 + c2.getR();System.out.println(c1的周长是 + c1.getPerimeter();System.out.println(c1的面积是 + c1.getArea();if (pareTo(c2)=1)System.out.println(c1比c2大);else if (
27、pareTo(c2)=-1)System.out.println(c1比c2小);else System.out.println(c1与c2相等);abstract class GeometricObjectpublic abstract double getArea();public abstract double getPerimeter();class Circle extends GeometricObject implements Comparableprivate double r;public Circle()public Circle(double r)this.r = r;public double getR() return r;public void setR(double r) this.r = r;Overridepublic double getArea() return Math.PI * r * r;Overridepublic double getPerimeter() return 2 * Math.PI * r;Overridepublic int compareTo(Circle o) if (r o.getR()return 1;else if ( r o.getR() )return -1;elsereturn 0;专心-专注-专业
限制150内