当前位置:首页 > JAVA各章习题及答案
1.消息就是向对象发出 服务请求 ,是对 数据成员 和 成员方法 的引用。 2.在面向对象系统中,消息分为两类 公有消息 和 私有消息 。
3.在面向对象程序设计中,采用 继承 机制可以有效地组织程序结构。充分利用已有的类来创建更复杂的类,大大
提高程序开发的效率,提高代码的复用率,降低维护的工作量。
4. 数据成员的隐藏 是指在子类中重新定义一个与父类中已定义的数据成员名完全相同的数据成员。 5.子类可以重新定义与父类同名的成员方法,实现对父类方法的 覆盖 。
6.子类在重新定义父类已有的方法时,应保持与父类完全相同的 方法名 、 返回值类型 和 参数列表 ,否则就不
是方法的覆盖,而是子类定义自己特有的方法,与父类的方法无关。 7.this代表了 当前对象 的一个引用,super表示的是当前对象的 直接父类对象 的引用。 8.抽象类不能 创建 对象,该工作由抽象类派生的非抽象子类来实现。
9.如果父类中已有同名的abstract方法,则子类中就 不能 (能/不能)再有同名的抽象方法。 10.abstract类中不能有 private 访问权限的数据成员或成员方法。 11. interface 是声明接口的关键字,可以把它看成一个特殊类。接口中的数据成员默认的修饰符是 public static final ,接口中的成员方法默认的修饰符是 public abstract 。
12.如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须 实现 该接口的所有抽象方法;如果实现某接口的类是abstract的抽象类,则它可以 不实现 该接口所有的方法。但是对于这个抽象类任何一个非抽象的子类而言,它们父类所实现的接口中的所有抽象方法以及自身所实现接口中的抽象方法都必须有实在的 方法体 。 13.包的作用有两个,一是 划分类名空间 ,二是 控制类之间的访问 。
14.封装也称 信息隐藏 ,是指类的设计者只为类的使用者提供类的可以访问的部分(包括类的数据成员和成员方法),而把类中的其他成员 隐藏 起来,使用户不能访问的机制。
15.Java提供了4种访问权限来实现封装机制,即 private 、 protected 、 默认 和 public 。 16.Java中提供两种多态机制, 重载 与 覆盖 。 17.当一个构造方法需要调用另一个构造方法时,可以使用关键字 this ,同时这个调用语句应该是整个构造方法的 第一条 可执行语句。
18.如果子类自己没有构造方法,那么父类也一定 没有 (有/没有)带参的构造方法,此时它将继承父类的 无参构造方法 作为自己的构造方法;如果子类自己定义了构造方法,则在创建新对象时,它将先执行 父类 的构造方法,然后再执行自己的 构造方法 。
19.对于父类的含参数构造方法,子类可以通过在自己的构造方法中使用 super 关键字来调用它,但这个调用语句必须是子类构造方法的 第一条 可执行语句。
20.创建一个名为myPachkage的包的语句为 package myPackage; ,该语句应该放在程序第一行 位置。
三、判断题
1.Java语言中,构造方法是不可以继承的。( √ )
2.子类的成员变量和成员方法的数目一定大于等于父类的成员变量和成员方法的数目。( × ) 3.抽象方法是一种只有说明而无具体实现的方法。( √ ) 4.Java语言中,所创建的子类都应有一个父类。( √ )
5.调用this 或super构造方法的语句必须放在第一条语句。( √ ) 6.一个类可以实现多个接口,接口可以实现“多重继承”。 ( √ ) 7.实现接口的类不能是抽象类。( √ )
8.使用构造方法只能给实例成员变量赋初值。( √ )
9.Java 语言不允许同时继承一个类并实现一个接口。( × )
9
第6章
一、选择题
1.给出下面程序代码:
byte[] a1, a2[]; byte a3[][]; byte[][] a4;
下列数组操作语句中哪一个是不正确的?( A ) A.a2 = a1 B.a2 = a3 C.a2 = a4 D.a3 = a4
public class X6_1_5 {
【解析】只有维数相同的数组才能相互赋值。 public static void main(String[] args) { 2.关于数组,下列说法中不正确的是( C )。 AB aa = new AB();
AB bb; A.数组是最简单的复合数据类型,是一系列数据的集合
bb = aa;
B.数组元素可以是基本数据类型、对象或其他数组
System.out.println(bb.equals(aa));
C.定义数组时必须分配内存 }
} D.一个数组中所有元素都必须具有相同的数据类型
class AB{ int x = 100; } 【解析】数组元素可以是基本数据类型、对象或其他数组。
A.true B.false C.编译错误 D.100
3.设有下列数组定义语句:
【解析】同一个类的两个对象可以相互赋值,赋值后
int a[] = {1, 2, 3};
两个对象具有相同的存储空间,因此是相同的。
则对此语句的叙述错误的是( C )。
6.已知有定义:String s=\,下面哪个表达式正确?
A.定义了一个名为a的一维数组
( A )
B.a数组有3个元素
A.s += \ B.char c = s[1];
C.a数组元素的下标为1~3
C.int len = s.length; D.String s = s.toLowerCase();
D.数组中每个元素的类型都是整数
【解析】字符串对象可以执行“+=”运算,但不能用
【解析】数组元素的下标是从0开始的。
s[1]这种方式取其中的字符,也不能用length求它的长度,
可以用length()求其长度,因此B、C不正确,不能再次
定义s字符串,因此D不正确。
二、填空题
1. Object类 是所有类的直接或间接父类,它在 java.lang 包中。
2.System类是一个功能强大、非常有用的特殊的类,它提供了 标准输入/输出 、 运行时 系统信息等重要工具。这个类不能 实例化 ,即不能创建System类的对象,所以它所有的属性和方法都是 static 类型,引用时以类名System为前缀即可。
3.Applet由浏览器自动调用的主要方法 init , start , stop 和 destroy 分别对应了Applet从初始化、启动、暂停到消亡的生命周期的各个阶段 。
4.数组是一种 复合 数据类型,在Java中,数组是作为 对象 来处理的。数组是有限元素的有序集合,数组中的元素具有相同的 数据类型 ,并可用统一的 数组名 和 下标 来唯一确定其元素。
5.在数组定义语句中,如果[]在数据类型和变量名之间时,[]之后定义的所有变量都是
数组 类型,当[]在变量名之后时,只有[]之前的变量是 数组 类型,之后没有[]的则不是数组类型。 6.数组初始化包括 静态 初始化和 动态 初始化两种方式。
7.利用 System 类中的 arraycopy() 方法可以实现数组元素的复制;利用 Arrays 类中的 sort() 和 binarySearch() 方法可以实现对数组元素的排序、查找等操作。 8.Java语言提供了两种具有不同操作方式的字符串类: String 类和 StringBuffer 类。它们都是 java.lang.Object 的子类。
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 )。
10
第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是正确的。 力的支持
11
二、填空题 1.异常是在程序编译或运行中所发生的可预料或不可预料的异常事件,出现在编译阶段的异常,称之为 编译时异常 ,出现在运行阶段的异常,称之为 运行时异常 。
2.根据异常的来源,可以把异常分为两种类型: 系统定义的运行时异常 和 用户自定义异常 。 3.所有的Java异常类都是系统类库中的 Exception 类的子类。
4.抛出异常分为 由系统自动抛出异常 、 通过throw抛出异常 以及 通过throws抛出异常 三种情况。 5.Java语言为我们提供了 try?catch 语句和try?catch?finally 语句捕捉并处理异常。 6.一个try块后面可能会跟着若干个 catch 块,每个 catch 块都有一个异常类名作为参数。
7.如果try语句块产生的异常对象被第一个catch块所接收,则程序的流程将 转向第一个catch块 ,catch语句块执行完毕后就 退出当前方法 ,try块中尚未执行的语句和其他的catch块将被 忽略 ;如果try语句块产生的异常对象与第一个catch块不匹配,系统将自动转到 第二个catch块 进行匹配。 8.由于异常对象与catch块的匹配是按照catch块的 先后 顺序进行的,所以在处理多异常时应注意认真设计各catch块的排列顺序。 9.throws语句抛出的异常实际上是由throws语句修饰的方法内部的 throw 语句抛出的,使用throws的主要目的是为了 通知所有预调用此方法的方法 。
三、判断题
1.捕获异常try语句后面通常跟有一个或多个catch()方法用来处理try块内生成的异常事件。( √ ) 2.使用try-catch-finally语句只能捕获一个异常。( × ) 3.try-catch语句不可以嵌套使用。( × )
4.Error类所定义的异常是无法捕获的。( √ )
5.IOException异常是非运行时异常,必须在程序中抛弃或捕获。( √ ) 6.用户自定义异常类是通过继承Throwable类来创建的。( × )
7.当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。( √ )
12
共分享92篇相关文档