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