资源描述
______________________________________________________________________________________________________________
期末复习试卷(三)
一、 单项选择题
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(String[] 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()方法)并实现了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));
类似的包装类还有Long\Float\Double\Char\Boolean等,都是将基本数据类型包装为类。
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创建对象。
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. 接口的引用既可以调用实现类重写的接口的方法,也可以调用实现类新增的方法。
C. 接口的实现类可以实现接口的部分方法。
D. 接口的方法都是抽象的,因此不可以创建对象。
正确答案:D
解析:选项A的前半句是对的,后半句错了。
选项B前半句是对的,后半句不对。示例如下:
public interface 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() //错误:不可以访问实现类新增的方法
}
}
选项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[])
D. public static void main(String args[])
正确答案:D
8、有一段java应用程序,其中包含一个公共类,名字为Cat,那么保存它的源文件名是( )
A. Cat.java
B. Cat.class
C. Cat
D. 都对
正确答案:A
与第1个选择题类似。
9、下列哪个是JDK提供的编译器?( )
A. java.exe
B. javac.exe
C. javap.exe
D. javaw.exe
正确答案:B
10、某个源文件如下:public class TestPerson{}class Person{}class Student extends Person{}那么保存它的源文件名是( )
A. TestPerson.java
B. Person.java
C. Student.java
D. TestPerson.class
正确答案:A
参考第1、8题。
11、以下定义一位数组的语句中,正确的是( )
A. int a[5];
B. int a[] =new [5];
C. int a[];
int a = new int[5];
D. int a[] = {1,2,3,4,5};
正确答案:D
选项A: java中的数组是类,需要使用new关键字创建。
选项B:落类型了,正确写法为 int a[] = new int[5];
选项C:重复定义变量a,正确写法: int a[];
a = new int[5];
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接口的定义如下:
接口的实现类必须覆盖在接口中定义的抽象的方法,覆盖就意味在实现类中的方法要与在接口中定义的抽象方法同名、同参、同返回值。
13、将类的某个成员方法的访问权限设置为protected的,则下面说法正确的是( )。
A. 同一包中的其他类不可以访问该方法
B. 不同包中的子类可以访问该方法
C. 所有包中的类都可以访问该方法
D. 所有包中的类都不可以访问该方法。
正确答案:B
14、下列哪一个类声明是错误的?( )
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: public class Review1307{
2: 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实现了Comparable接口,即子类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类型的二维数组,下面关于arr的声明和初始化,哪一项是错误的?( )
A. int[][] arr = {{1,2},{3,4,5}};
B. int[][] arr = new int[2][3];
C. int[][] arr = new int[2][];
D. int[][] arr = new int[][3];
正确答案:D
解析:Java的二维数组是由一维数组模拟的,示例如下:
没有第一维,就不会有第二维,所以,创建数组的时候,不能只指明第二维,不指明第一维。但可以仅指明第一维,不指明第二维,如选项C。
19、下面说法哪一个是错误的?( )
A. 构造方法的名称与类名一样。
B. 构造方法返回值可以为void。
C. 一个类可以有多个构造方法。
D. 在一个类中可以使用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. interface 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
C. char, extends, float, double
D. public, private, protected
正确答案:D
23、下面关于接口的说法哪一条是错误的?( )
A. 接口是一种特殊的抽象类,接口的方法都是抽象方法;
B. 类可以实现接口;
C. 接口和子接口可以有自己的实例对象;
D. 可以使用接口声明引用,引用实现本接口或子接口的类的对象。
正确答案:C
解析:接口中的方法都是抽象的,不能创建实例;类似的,抽象类也不可以创建实例。
24、下面关于抽象类的说法,哪一条是错误的?( )
A. 抽象类可以不包含抽象方法;
B. 一个类只要有一个抽象方法,就是抽象类;
C. 抽象类不能创建对象,创建对象的工作由抽象类的具体子类来实现;
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类中定义的super()方法
正确答案:C
27、关于覆盖和重载,下面说法哪一个是错误的?( )
A. 一个类中包含多个同名但参数不同的方法,这些方法构成了重载。
B. 普通的成员方法可以重载,但构造方法不可以重载。
C. 如果在子类中定义的方法与其父类的某个方法具有相同的名称、参数和返回值,则称子类的方法覆盖了父类的方法。
D. 当父类的方法不能满足子类的要求时,子类可覆盖父类的方法;当一种功能有多种实现时,可使用重载来提供多个同名不同参的方法。
正确答案:B
解析:构造方法也可以重载,即一个类可以有多个构造方法。
28、下面的代码说明类A和类B之间是什么关系?( )
class A{ }
class B extends A { }
A. 关联
B. 继承
C. 依赖
D. 实现
正确答案:B
29、下面代码的错误出现在________。
1: public class Review1308{
2: 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、下列关于继承的概念,哪项叙述是正确的?( )
A. 在java中,允许一个类继承多个父类;
B. 在java中,一个类只能实现一个接口;
C. 在java中,一个类不能同时继承一个类和实现一个接口;
D. java的单一继承使代码更可靠。
正确答案:D
解析:Java采用单继承,即只能有一个父类,但可以实现多个接口。
二、 程序题
1、GeometricObject是几何图形抽象类,Circle类继承了GeometricObject类,同时实现了Comparable<Circle>接口,三者的UML类图如下: 提示:Comparable<T>接口在java.lang包中已经定义,不需要自己写。
解题要求:编写测试类,要求如下:
(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);
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 (pareTo(c2)==1)
System.out.println("c1比c2大");
else if (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的面积是" + c1.getArea());
if (pareTo(c2)==1)
System.out.println("c1比c2大");
else if (pareTo(c2)==-1)
System.out.println("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 (pareTo(c2)==-1)
System.out.println("c1比c2小");
else
System.out.println("c1与c2相等");
}
}
abstract class GeometricObject{
public abstract double getArea();
public abstract double getPerimeter();
}
class Circle extends GeometricObject implements Comparable<Circle>{
private double r;
public Circle(){}
public Circle(double r){
this.r = r;
}
public double getR() {
return 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
return 0;
}
}
Welcome To
Download !!!
欢迎您的下载,资料仅供参考!
精品资料
展开阅读全文