Java习题集(第三版)

2019-04-02 09:09

JAVA语言程序设计习题集

一、简答题

1、Java程序分为哪两大类,它们之间有哪些相同点?主要区别有哪些? 答:Java程序分为Java Application和Java Applet。

相同点有两个:(1)两类程序都由一个或多个以.class为后缀的文件组成;(2)两类程序都需要用

户系统安装Java虚拟机(JVM)。Java虚拟机能够载入并翻译Java程序,并且可以提供Java内核包的实现。

区别有:(1)Java Applet程序可以被嵌入HTML网页内,从而可以在网络上发布,当网页被浏览时

它们可以在浏览器中运行;而Java Application程序却不支持网页嵌入和下载。(2)Java Applet程序只能在与Java兼容的容器中运行,例如网络浏览器;而Java Application程序却没有这个限制。(3)一个Java Applet程序必须定义一个Applet类的子类,一个Java Application程序也可以定义一个Applet类的子类,但这不是必须的,一个 Java Application程序必须在一个类中定义一个main方法,而一个Java Applet 程序并不定义main方法,它的执行是由Applet类定义的多个方法控制的。 2、Java程序是由什么组成的?Java 源文件的命名规则是怎样的?

答:一个Java 程序是由若干个类组成的。但只能有一个类是public 类。Java源文件命名规则是:源文件名必须与其中的public 类的名字相同,扩展名是java;如果源文件中没有public 类,那么源文件的名字只要和某个类的名字相同,并且扩展名是java就可以了。 3、Java语言与Java技术的关系如何?Java语言包括哪两部分?

答:Java语言是Java技术的基础。Java语言包括语法规则和Java类库两部分。 4、开发与运行Java程序需要经过哪些主要过程? 答:源程序编辑、字节码编译和解释运行。

5、为什么一个Java文件编译后可以获得多个字节码文件?

答:这是因为一个源文件中可有多个类,文件经过编译后,每个类就生成一个字节码文件(扩展名为class)。

6、简述Java应用程序和Java小应用程序各用什么方式解释运行的?

答:Java应用程序和Java小应用程序的源代码编辑与字节码编译生成过程是一样的,而其执行也都是解释执行其编译好的字节码文件,只是Java应用程序需使用独立的Java解释器来解释执行其字节码文件,而Java小应用程序的字节码文件必须嵌入到HTML语言的文件中并由负责解释HTML文件的WWW浏览器充当其解释器,来解释执行Java小程序的字节码文件。

7、面向对象的开发方法与传统的面向过程的开发方法有什么不同?

答:传统的面向过程的开发方法是把现实世界的问题转化成计算机逻辑,而面向对象技术是计算机逻辑来模拟现实世界的问题。

8、什么是对象、类和实体?它们之间的关系如何?试述下面的说法映射到面向对象的计算机逻辑中分别对应什么概念。

(1)计算机92班 (2)计算机92班的同学刘利 (3)大学生 (4)X大学的大学生 (5)班级 答:对象是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现;类是同种对 象的集合与抽象。

(1)班级类的对象 (2)大学生类的对象 (3)大学生类 (4)大学生类的子类 (5)班级类 9、对象有哪些属性?在计算机逻辑中如何描述这些属性?

答:对象有状态、行为、标志三个属性;在计算机逻辑中分别用对象的变量、方法和对象名来描述这三个属性。

10、面向对象的开发包括哪些过程?

答:面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试。 11、面向对象程序设计方法有哪几个最重要的特点?

- 1 -

答:抽象、封装、继承、多态。

12、什么是父类(超类)?什么是子类?父类、子类间属性有何关系?

答:当两个类具有继承关系时,被继承的类称为父类或超类;继承了父类或超类的所有数据和操作的类称为子类。父类是所有子类的公共属性的集合,而每一个子类则是父类的特殊化,是在公共属性的基础上的功能、内涵的扩展和延伸。 13、什么是封装?

答:封装就是指利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其它部分只有通过包裹在数据外面的被授权的操作,才能够与这个抽象数据类型交流和交互。 14、使用继承有什么好处?什么是单重继承?什么是多重继承?Java采用的是单重继承还是多重继承? 答:使用继承的主要好处是使得程序结构清晰,降低了编码和维护的工作量。只有一个单一父类称为单重继承。一个类可以有一个以上的父类称为多重继承。Java采用的是单重继承。 15、什么是多态?实现多态有哪些方式?

答:一个程序中同名的不同方法共存的情况称为多态。实现多态的方式有覆盖和重载。 16、什么是覆盖多态?什么是重载多态?覆盖多态和重载多态分别如何区分不同的同名方法?

答:子类对继承自父类的方法的重新定义就称为方法的覆盖,这种多态称为覆盖多态;类对自身已有的同名方法的重新定义称为重载,这种多态称为重载多态。覆盖多态以对象名或类名为前缀来区分不同的同名方法;而重载多态则是使用不同的参数列表来区分不同的同名方法。 17、类及类成员的访问控制符有哪些?

答:public,protected,private,private protected。 18、构造函数特殊在哪里?构造函数什么时候执行?被谁调用?

答:构造函数的特殊性在于它既可以从父类那里继承,也可以相互重载。

构造函数在创建新对象时执行,由系统自动调用。

19、类的访问说明符有哪些?

答:有public,final,abstract,protected(不加任何说明的缺省值) 20、方法访问说明符有哪些?

答:有public,protected,private,default。 21、关键字static可以修饰哪些类的组成部分? 答:可以修饰属性、方法、静态初始化器。

22、什么是静态初始化器?静态初始化器与构造函数有什么不同?

答:静态初始化器是由关键字static引导的一对大括号括起的语句组,其作用与类的构造函数有些相似,都是用来完成初始化的工作,但静态初始化器在三点上与构造函数有根本的不同:

(1)构造函数是对每个新创建的对象初始化,而静态初始化器是对类自身进行初始化。

(2)构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载入内存时由系统调用执行。

(3)不同于构造函数,静态初始化器不是方法,没有方法名、返回值和参数列表。 23、静态属性有什么特点?类对象可以访问或修改静态属性吗?

答:静态属性是类的属性,不专属于某个方法,类对象可以访问或修改静态属性。

24、设某程序创建了类MyClassl的两个对象,试写出静态初始化器和构造函数执行的前后次序与次数。

答:先执行类MyClassl的静态初始化器一次,再执行构造函数两次。 25、抽象方法有什么特点?抽象方法的方法体在何处定义?

答:抽象方法的特点是用abstract修饰符修饰,只有方法头没有具体的方法体。

抽象方法在定义该方法的抽象类的非抽象子类中定义。

26、final修饰符可以用来修饰什么?被final修饰符修饰后有何特点?

答:final修饰符可用来修饰类、属性、方法和终结器。 被final修饰符修饰的类没有子类。被final修饰符修饰的属性在程序整个执行过程中都不能改变。被final修饰符修饰的方法是功能和内部语句不能更改的最终方法。被final修饰符修饰的终结器(以称析

- 2 -

构器——finalize()方法,是在对象被删除前进行收尾工作的方法)也是不能更改的。 27、哪些修饰符不能组合使用?

答:abstract与private,abstract与final,abstract与static。 28、书写语句完成下面的功能。

(1)定义一个类,其名称为MyClass,类体为空,它可以被所有的其他类访问。 (2)将对象Objectl的属性fieldl在屏幕上显示出来。

答:(1)public class MyClass{}

(2)System.out.print(Object1.field1); 29、书写语句完成下面的功能。

(1)调用对象Objectl的方法methodl,把返回值赋值给变量Hold。 (2)定义一个整型属性Mine,使得只有这个类本身可以访问它。 答:(1) Hold=Object1.method1(); (2) private int Mine; 30、书写语句完成下面的功能。

(1)为类Classl定义一个整型变量field2,使得所有其他类都可以访问它。

(2)定义一个无形式参数无返回值的方法method2,使得使用类名Classl作前缀就可以调用它。 答:(1) public class Class1{public int field2;} (2) static void method2() 31、书写语句完成下面的功能。

(1)为类Class2编写构造函数的方法头,该构造函数不接受形式参数。

(2)为类Class2编写构造函数的方法头,该构造函数接受两个整型形式参数。 答:(1) Class2()

(2) Class2(int c1,int c2) 32、书写语句完成下面的功能。

(1)创建类Classl的一个对象Objectl,定义这个类的一个引用Refl,把对象Objectl的引用赋给Ref1。 (2)为类Classl创建一个静态整型变量s_data。

答:(1) Class1 Object1=new Class1();Class1 Ref1=Object1; (2) static int s_data;

33、Java中如何定义继承关系?写出定义类库中的类java.awt.Frame的子类MyFrame的类头的语句。

答:Java中是通过extends关键字定义继承关系的,其语句的一般格式是: class 子类 extends 父类。

import java.awt.*;

class MyFrame extends Frame

34、设父类SuperClass中定义了公共整型属性SuperProperty,SuperClass的子类SubClass中定义了公共整型属性SubProperty,则属性SubClass.SuperProperty是否存在?来自何处?

答:存在,这个属性是从其父类那里继承来的。

35、什么是多重继承?Java是否支持多重继承?Java采取什么机制来替代多重继承?

答:一个子类有多个父类的情况称为多重继承,Java不支持多重继承,Java用实现接口的方法替代多重继承。

36、什么是属性(域)的隐藏?

答:子类重新定义一个与从父类那里继承来的属性完全相同的属性,称为属性的隐藏。 37、一个类里是否可以有同名属性共存的情况?是否最多只能有两个同名的属性。

答:子类重新定义父类的同名属性可以实现同名属性共存,若此子类的同名属性又被其子类所隐藏,可以有更多的同名属性共存。

38、一个类里有同名属性共存的情况下,如何分别操纵这些同名的属性?

答:使用子类定义的方法将操纵子类定义的属性;使用继承自父类的方法将操纵父类定义的属性。

- 3 -

39、子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?此时子类中还能找到父类原来的方法吗?

答:这种情况称为方法的覆盖,此时,在子类中已不能找到父类原来的方法,它的内存位置已经被替代。 40、同名的不同方法共存的情况称为什么?如何区分这些同名方法?

答:这种情况称为方法的重载。不同类的同名方法用类名区分,同类的同名方法用形式参数数目、顺序和类型区分。

41、Java中的多态有哪些方式?

答:Java中的多态有两种方式,第一种是子类对父类方法的覆盖,第二种是同类中方法的重载。 42、“重载中,两个同名方法只要返回类型或参数列表不同即可互相分辨”这种说法是否正确?为什么?

答:不正确,仅仅返回类型不同不能区分同名方法,必须参数列表不同。

43、试解释this和super两个关键字,其中this指代的是一个类还是一个具体的对象?

答:this表示的是当前对象本身,即this代表了当前对象的一个引用。super表示的是当前对象的父类对象,是当前对象的直接父类对象的引用。

this指代的是一个具体对象。

44、子类SubClass重新定义并覆盖了父类SuperClass中的方法methodl(),如何使子类能够调用父类原先定义的方法methodl()? 答:super.methodl();

45、构造函数可以继承吗?子类继承父类的构造函数应遵循哪些原则?

答:子类可以继承父类的构造函数,构造函数的继承原则有: (1)子类无条件地继承父类的不含参数的构造函数;

(2)如果子类自己没有构造函数,则它将继承父类的无参数构造函数作为自己的构造函数,如果子类自己定义了构造函数,则在创建新对象时,它将先执行继承自父类的无参数构造函数,然后再执行自己的构造函数。

(3)对于父类的含参数的构造函数,子类可以通过在自己构造函数中使用super关键字来调用它,但这个调用语句必须是子类构造函数的第一个可执行语句。

46、一个构造函数如何调用同类的其他构造函数?如何调用父类的构造函数? 答:在同类中使用this,调用父类的构造函数使用super。 47、什么是包?如何创建包?为什么要使用包?包物理地对应什么?

答:包是相关类的松散集合。使用package语句可以创建包。使用包可以方便相关的类共同工作,也方便其他包中的类引用它们。包物理地对应文件夹,其中应保存包中类的字节码文件。 48、试写出一个语句创建一个名为MyPackage的包,这个语句应该放在程序的什么位置?

答:package MyPackage;

应该在程序第一句。

49、试写出引用MyPackage中所有类的语句和引用MyPackage包中的一个类MyClassl。 答:引用MyPackage中所有类的语句是 import MyPackage.*;

引用MyPackage包中的一个类MyClass的语句是import MyPackage.MyClassl; 50、什么是接口?它起到什么作用?

答:接口是一种特殊的类,是用来实现类间多重继承功能的结构。 51、接口中包括什么?接口中的各成员的访问控制符是一样的吗?是什么?

答:接口中包括常量与抽象方法。接口中的属性成员的访问控制符都是public static final,接口中的所有方法的访问控制符都是public abstract,都是公共方法。

52、创建接口使用什么关键字?接口可以有父接口吗?试书写语句创建一个名为 MyInterface的接口,它是继承了MySuperInterfacel和MySuperInterface2两个接口的子接口。

答:创建接口使用interface关健字,接口可以有父接口。

Interface MyInterface extends MySuperInterfacel,MySuperInterface2

- 4 -

53、一个类如何声明实现一个接口?

答:在类头处使用implements关键字。

54、实现接口的类是否必须覆盖该接口的所有抽象方法?

答:如果这个类是非抽象类的话,就必须覆盖该接口的所有抽象方法。

55、实现接口的抽象方法时,方法头应该与接口中定义的方法头完全一致,但是有时需要增加一个public修饰符,为什么?

答:接口的抽象方法的访问限制符都己指定为public,所以类在实现方法时,必须显式地使用public修饰符,否则将被系统警告为缩小了接口中定义的方法的访问控制范围。 56、程序中的错误分为哪两类? 答:编译错误和运行错误。

57、对于编译错误和运行错误,分别应如何排除?

答:排除编译错误可以借助于编译器的错误提示,排除运行错误要使用断点、单步运行等用户控制流程的调试手段。

58、写出三个常见的系统定义的异常,它们都是什么类的子类?

答:三个常见的系统异常是InterruptedException,ClassNotFoundException ,IOException 。它们都是Exception类的子类。

59、用户程序如何抛出自己的异常?系统定义的异常如何抛出?

答:用户程序使用throw关键字抛出异常。系统定义的异常由系统在合适的时刻自动抛出。 60、阅读下面的程序并写出类MyClass3的所有成员,并写明它们定义自哪里。 classMyClassl {

private int proll; double prol2; ’ }

class MyClass2 extends MyClassl {

private double prol2; int pr021; }

class MyClass3 extends MyClass2 {

private int pr021; double pr031;

}

答:pr012(MyClassl),pr02l(MyClass3),pr03l(MyClass3)。 61、阅读下面的程序片段并回答问题。 classClassl

{

int fieldl; int field2; void methodl() {

System.out.println(“我是Classl的第一个方法”); }

void method2()

- 5 -


Java习题集(第三版).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中职内宿生养成生活卫生习惯教育的实践与思考

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

马上注册会员

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