Java期末复习 - 各章习题小题(2)

2019-08-31 13:14

第4章 类与对象

一、选择题

1.下列哪种类成员修饰符修饰的变量只能在本类中被访问?( D )

(A)protected (B)public (C)default (D)private

2.在Java语言中,哪一个包中的类是自动导入的?( A )

A)java.lang B)java.awt C)java.io D)java.applet

【解析】只有java.lang包中的类能够被自动导入。

3.给出下面的程序代码:

public class X4_1_3 { private float a; public static void m ( ){ }

}

如何使成员变量a被方法m( )访问( C ) (A)将private float a改为protected float a (B)将private float a改为public float a (C)将private float a改为static float a (D)将private float a改为float a 【解析】static类型的方法只能访问static类型的数据成员。

4.有一个类B,下面为其构造方法的声明,正确的是( B )。

(A)void B(int x) {} (B)B(int x) {} (C)b(int x) {} (D)void b(int x) {} 5.下面关于类的说法,不正确的是( C )。 (A)类是同种对象的集合和抽象 (B)类属于Java语言中的复合数据类型 (C)类就是对象 (D)对象是Java语言中的基本结构单位

【解析】类是对象的抽象,对象是类的实例 6.下面关于方法的说法,不正确的是( C )。 三、判断题

1.类是一种类型,也是对象的模板。( √ )

2.类中说明的方法可以定义在类体外。( × ) 3.实例方法中不能引用类变量。( × )

4.创建对象时系统将调用适当的构造方法给对象初始化。( √ )

5.使用运算符new创建对象时,赋给对象的值实际上是一个引用值。( √ )

6.对象赋值实际上是同一个对象具有两个不同的名字,它们都有同一个引用值。( √ ) 7.对象可作方法参数,对象数组不能作方法参数。( × ) 8.class是定义类的惟一关键字。( √ )

9.Java语言会自动回收内存中的垃圾。( √ )

(A)Java中的构造方法名必须和类名相同

(B)方法体是对方法的实现,包括变量声明和合法语句 (C)如果一个类定义了构造方法,也可以用该类的默认构造方法

(D)类的私有方法不能被其他类直接访问

【解析】类中一旦用户定义了构造方法,该类默认的构造方法就不存在了,除非用户再自定义该类的默认构造方法。

7.关于内部类,下列说法不正确的是( A )。 (A)内部类不能有自己的成员方法和成员变量 (B)内部类可用private或protected修饰符修饰

(C)内部类可以作为其他类的成员,而且可访问它所在的类的成员

(D)除static内部类外,不能在类内声明static成员 8.定义外部类时不能用到的关键字是( C )。

(A)final (B)public (C)protected (D)abstract

【解析】定义外部类不能使用protected修饰符。

9.为AB类定义一个无返回值的方法f,使得使用类名就可以访问该方法,该方法头的形式为( D ) (A)abstract void f() (B)public void f() (C)final void f() (D)static void f() 【解析】只有static类型的方法才可以直接使用类名来引用。

10.定义一个公有double型常量PI,哪一条语句最好?( B )

(A)public final double PI; (B)public final static double PI=3.14; (C)public final static double PI; (D)public static double PI=3.14; 【解析】用public final static来定义常量,既可以节省存储空间,又可以保证数值不会被改变。

6

第5章 子类与继承

一、选择题

1.已知有下面类的说明:

public class X5_1_1 extends x{ private float f =10.6f; int i=16;

static int si=10;

public static void main(String[] args) { X5_1_1 x=new X5_1_1(); } }

在main()方法中,下面哪条语句的用法是正确的?( A )

A.x.f B.this.si C.X5_1_1.i D.X5_1_1.f

【解析】由于x是在main方法内部定义的对象,因此它可以引用类的非static类型的属性,因此选A,而this和super不能在main方法中使用,使用类名只能引用本类的静态属性,因此B、C、D不对。

3.下面关于接口的说法中不正确的是(C )。 A.接口中所有的方法都是抽象的

B.接口中所有的方法都是public访问权限

C.子接口继承父接口所用的关键字是implements D.接口是Java中的特殊类,包含常量和抽象方法

【解析】子接口继承父接口所用的关键字也是extends,只有类实现接口时才使用implements。 4.区分类中重载方法的依据是( A )。 A.形参列表的类型和顺序 B.不同的形参名称 C.返回值的类型不同 D.访问权限不同 【解析】形参表的类型和顺序不同时区分重载方法的唯一标志。

5.子类对象能否直接向其父类赋值?父类对象能否向其子类赋值?( B ) A.能,能 B.能,不能 C.不能,能 D.不能,不能

【解析】子类对象可以直接赋值给父类对象,而父类对象不能直接赋值给子类对象。

6.Java语言类间的继承关系是( A )。 A.单继承 B.多重继承 C.不能继承 D.不一定 【解析】Java语言类间的继承关系是单继承,但一个类可以实现多个接口。

7.Java语言接口间的继承关系是( B )。

A.单继承 B.多重继承 C.不能继承 D.不一定 【7.解析】Java语言接口间的继承关系允许多重继承。 8.一个类实现接口的情况是( A )。

2.下列程序的运行结果是( C )。

public class X5_1_2 extends x{

int ab(){

static int aa=10; aa++;

System.out.println(aa); }

public static void main(String[] args) { X5_1_2 x=new X5_1_2(); x.ab(); } }

A.10 B.11

C.编译错误 D.运行成功,但不输出

【解析】方法体内的局部变量不能使用static修饰符。

A.一次可以实现多个接口 B.一次只能实现一个接口 C.不能实现接口 D.不一定

【解析】Java语言允许一个类一次实现多个接口。 9.定义外部类的类头时,不可用的关键字是( C )。 A.public B.final C.protected D.abstract

【解析】定义外部类时不能使用protected关键字。

10.如果局部变量和成员变量同名,如何在局部变量作用域内引用成员变量?( B )

A.不能引用,必须改名,使它们的名称不相同 B.在成员变量前加this,使用this访问该成员变量 C.在成员变量前加super,使用super访问该成员变量 D.不影响,系统可以自己区分

【解析】this可以用来引用本类对象。 11.下面说法不正确的是( B )。 A.抽象类既可以做父类,也可以做子类 B.abstract和final能同时修饰一个类

C.抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类或接口

D.声明为final类型的方法不能在其子类中重新定义 【解析】abstract和final不能同时修饰一个类,因为abstract类需要子类,而final类不能有子类。

7

三、判断题

1.Java语言中,构造方法是不可以继承的。( √ )

2.子类的成员变量和成员方法的数目一定大于等于父类的成员变量和成员方法的数目。( × ) 3.抽象方法是一种只有说明而无具体实现的方法。( √ ) 4.Java语言中,所创建的子类都应有一个父类。( √ )

5.调用this 或super构造方法的语句必须放在第一条语句。( √ ) 6.一个类可以实现多个接口,接口可以实现“多重继承”。 ( √ ) 7.实现接口的类不能是抽象类。( √ )

8.使用构造方法只能给实例成员变量赋初值。( √ )

9.Java 语言不允许同时继承一个类并实现一个接口。( × )

第6章

一、选择题

1.给出下面程序代码:

byte[] a1, a2[]; byte a3[][]; byte[][] a4;

下列数组操作语句中哪一个是不正确的?( A ) A.a2 = a1 B.a2 = a3 C.a2 = a4 D.a3 = a4 【解析】只有维数相同的数组才能相互赋值。 2.关于数组,下列说法中不正确的是( C )。

A.数组是最简单的复合数据类型,是一系列数据的集合 B.数组元素可以是基本数据类型、对象或其他数组 C.定义数组时必须分配内存

D.一个数组中所有元素都必须具有相同的数据类型 【解析】数组元素可以是基本数据类型、对象或其他数组。 3.设有下列数组定义语句:

int a[] = {1, 2, 3};

则对此语句的叙述错误的是( C )。 A.定义了一个名为a的一维数组 B.a数组有3个元素

C.a数组元素的下标为1~3

D.数组中每个元素的类型都是整数

【解析】数组元素的下标是从0开始的。

4.执行语句:int[] x = new int[20];后,哪个是正确的?(C) A.x[19]为空 B.x[19]未定义 C.x[19]为0 D.x[0]为空 【解析】此语句定义了x数组后,x[0]~x[19]的值全部为0。 5.下面代码运行后的输出结果为( A )。

public class X6_1_5 {

public static void main(String[] args) { AB aa = new AB(); AB bb; bb = aa; System.out.println(bb.equals(aa)); } }

class AB{ int x = 100; }

A.true B.false C.编译错误 D.100

【解析】同一个类的两个对象可以相互赋值,赋值后两个对象具有相同的存储空间,因此是相同的。 6.已知有定义:String s=\,下面哪个表达式正确?( A )

A.s += \ B.char c = s[1]; C.int len = s.length; D.String s = s.toLowerCase(); 【解析】字符串对象可以执行“+=”运算,但不能用s[1]这种方式取其中的字符,也不能用length求它的长度,可以用length()求其长度,因此B、C不正确,不能再次定义s字符串,因此D不正确。

8

第7章 内部类与异常类

一、选择题

1.关于异常的含义,下列描述中最正确的一个是( D )。 A.程序编译错误 B.程序语法错误

C.程序自定义的异常事件 D.程序编译或运行时发生的异常事件

【解析】异常就是程序编译或运行时发生的异常事件。 2.自定义异常时,可以通过对下列哪一项进行继承?( C )

A.Error类 B.Applet类

C.Exception类及其子类 D.AssertionError类 【解析】自定义异常类时,该类必须继承Exception类及

4.运行下面程序时,会产生什么异常?( A )

public class X7_1_4 {

public static void main(String[] args) { int x = 0; int y = 5/x; int[] z = {1,2,3,4}; int p = z[4]; } }

其子类。

3.对应try和catch子句的排列方式,下列哪一项是正确的?( A )

A.子类异常在前,父类异常在后 B.父类异常在前,子类异常在后 C.只能有子类异常

D.父类和子类不能同时出现在try语句块中

【解析】对应try和catch子句的排列方式,要求子类异常(范围小的异常)在前,父类异常(范围大的异常)在后。

5.运行下面程序时,会产生什么异常?( C )

public class X7_1_5 {

public static void main(String[] args) { int[] z = {1,2,3,4}; int p = z[4]; int x = 0; int y = 5/x; } }

A.ArithmeticException B.NumberFormatException

C.ArrayIndexOutOfBoundsException D.IOException

【解析】当程序执行到“int y = 5/x”语句时,发生异常,程序中止执行,因此发生ArithmeticException异常。 6.下列程序执行的结果是( B )。

A.ArithmeticException B.NumberFormatException

C.ArrayIndexOutOfBoundsException D.IOException 【解析】当程序执行到“int p = z[4]”语句时,发生异常,程序中止执行,因此发生ArrayIndexOutOfBoundsException异常。

public class X7_1_6 { public static void main(String[] args) { try{ return; } finally{ System.out.println(\ } } }

A.程序正常运行,但不输出任何结果 B.程序正常运行,并输出Finally C.编译通过,但运行时出现异常 D.因为没有catch子句,因此不能通过编译

【解析】在执行try-catch-finally语句块时,最后必须执行finally语句块中的内容,而本程序没有异常发生,因此程序正常运行,并输出Finally。

7.下列代码中给出正确的在方法体内抛出异常的是8.下列描述了Java语言通过面相对象的方法进行异常处( B )。 理的好处,请选出不在这些好处范围之内的一项(C) A.new throw Exception(\.throw new Exception(\A.把各种不同的异常事件进行分类,体现了良好的继承C.throws IOException(); D.throws IOException; 性 B.把错误处理代码从常规代码中分离出来 【解析】在方法体内抛出异常时只能使用throw,而不能C.可以利用异常处理机制代替传统的控制流程 使用throws,另外,“new Exception(\\”是创建一个异D.这种机制对具有动态运行特性的复杂程序提供了强有常,因此B是正确的。 力的支持

9

三、判断题(第7章)

1.捕获异常try语句后面通常跟有一个或多个catch()方法用来处理try块内生成的异常事件。( √ ) 2.使用try-catch-finally语句只能捕获一个异常。( × ) 3.try-catch语句不可以嵌套使用。( × )

4.Error类所定义的异常是无法捕获的。( √ )

5.IOException异常是非运行时异常,必须在程序中抛弃或捕获。( √ ) 6.用户自定义异常类是通过继承Throwable类来创建的。( × )

7.当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。( √ )

三、判断题(第9章)

1.一个Java多线程的程序不论在什么计算机上运行,其结果始终是一样的。( × )

2.Java线程有五种不同的状态,这五种状态中的任何两种状态之间都可以相互转换。( × ) 3.所谓线程同步就是若干个线程都需要使用同一个synchronized修饰的方法。( √ )

4.使用Thread子类创建线程的优点是可以在子类中增加新的成员变量,使线程具有某种属性,也可以在子类中新增加方法,使线程具有某种功能。但是,Java不支持多继承,Thread类的子类不能再扩展其他的类。( √ )

5.Java虚拟机(JVM)中的线程调度器负责管理线程,调度器把线程的优先级分为10个级别,分别用Thread类中的类常量表示。每个Java线程的优先级都在常数1和10之间,即Thread.MIN_PRIORITY和Thread.MAX_PRIORITY之间。如果没有明确地设置线程的优先级别,每个线程的优先级都为常数8。( × )

6.当线程类所定义的run( )方法执行完毕,线程的运行就会终止。( √ ) 7.线程的启动是通过引用其start()方法而实现的。( √ )

10


Java期末复习 - 各章习题小题(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:课程设计(论文)-卧式钻孔组合机床液压系统设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: