-1-JAVA语言程序设计习题集一、简答题1、Java程序分为哪两大类,它们之间有哪些相同点?主要区别有哪些?答:Java程序分为JavaApplication和JavaApplet。相同点有两个:(1)两类程序都由一个或多个以.class为后缀的文件组成;(2)两类程序都需要用户系统安装Java虚拟机(JVM)。Java虚拟机能够载入并翻译Java程序,并且可以提供Java内核包的实现。区别有:(1)JavaApplet程序可以被嵌入HTML网页内,从而可以在网络上发布,当网页被浏览时它们可以在浏览器中运行;而JavaApplication程序却不支持网页嵌入和下载。(2)JavaApplet程序只能在与Java兼容的容器中运行,例如网络浏览器;而JavaApplication程序却没有这个限制。(3)一个JavaApplet程序必须定义一个Applet类的子类,一个JavaApplication程序也可以定义一个Applet类的子类,但这不是必须的,一个JavaApplication程序必须在一个类中定义一个main方法,而一个JavaApplet程序并不定义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文件的浏览器充当其解释器,来解释执行Java小程序的字节码文件。7、面向对象的开发方法与传统的面向过程的开发方法有什么不同?答:传统的面向过程的开发方法是把现实世界的问题转化成计算机逻辑,而面向对象技术是计算机逻辑来模拟现实世界的问题。8、什么是对象、类和实体?它们之间的关系如何?试述下面的说法映射到面向对象的计算机逻辑中分别对应什么概念。(1)计算机92班(2)计算机92班的同学刘利(3)大学生(4)X大学的大学生(5)班级答:对象是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现;类是同种对象的集合与抽象。(1)班级类的对象(2)大学生类的对象(3)大学生类(4)大学生类的子类(5)班级类9、对象有哪些属性?在计算机逻辑中如何描述这些属性?答:对象有状态、行为、标志三个属性;在计算机逻辑中分别用对象的变量、方法和对象名来描述这三个属性。10、面向对象的开发包括哪些过程?答:面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试。11、面向对象程序设计方法有哪几个最重要的特点?-2-答:抽象、封装、继承、多态。12、什么是父类(超类)?什么是子类?父类、子类间属性有何关系?答:当两个类具有继承关系时,被继承的类称为父类或超类;继承了父类或超类的所有数据和操作的类称为子类。父类是所有子类的公共属性的集合,而每一个子类则是父类的特殊化,是在公共属性的基础上的功能、内涵的扩展和延伸。13、什么是封装?答:封装就是指利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其它部分只有通过包裹在数据外面的被授权的操作,才能够与这个抽象数据类型交流和交互。14、使用继承有什么好处?什么是单重继承?什么是多重继承?Java采用的是单重继承还是多重继承?答:使用继承的主要好处是使得程序结构清晰,降低了编码和维护的工作量。只有一个单一父类称为单重继承。一个类可以有一个以上的父类称为多重继承。Java采用的是单重继承。15、什么是多态?实现多态有哪些方式?答:一个程序中同名的不同方法共存的情况称为多态。实现多态的方式有覆盖和重载。16、什么是覆盖多态?什么是重载多态?覆盖多态和重载多态分别如何区分不同的同名方法?答:子类对继承自父类的方法的重新定义就称为方法的覆盖,这种多态称为覆盖多态;类对自身已有的同名方法的重新定义称为重载,这种多态称为重载多态。覆盖多态以对象名或类名为前缀来区分不同的同名方法;而重载多态则是使用不同的参数列表来区分不同的同名方法。17、类及类成员的访问控制符有哪些?答:public,protected,private,privateprotected。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修饰符修饰的终结器(以称析-3-构器——finalize()方法,是在对象被删除前进行收尾工作的方法)也是不能更改的。27、哪些修饰符不能组合使用?答:abstract与private,abstract与final,abstract与static。28、书写语句完成下面的功能。(1)定义一个类,其名称为MyClass,类体为空,它可以被所有的其他类访问。(2)将对象Objectl的属性fieldl在屏幕上显示出来。答:(1)publicclassMyClass{}(2)System.out.print(Object1.field1);29、书写语句完成下面的功能。(1)调用对象Objectl的方法methodl,把返回值赋值给变量Hold。(2)定义一个整型属性Mine,使得只有这个类本身可以访问它。答:(1)Hold=Object1.method1();(2)privateintMine;30、书写语句完成下面的功能。(1)为类Classl定义一个整型变量field2,使得所有其他类都可以访问它。(2)定义一个无形式参数无返回值的方法method2,使得使用类名Classl作前缀就可以调用它。答:(1)publicclassClass1{publicintfield2;}(2)staticvoidmethod2()31、书写语句完成下面的功能。(1)为类Class2编写构造函数的方法头,该构造函数不接受形式参数。(2)为类Class2编写构造函数的方法头,该构造函数接受两个整型形式参数。答:(1)Class2()(2)Class2(intc1,intc2)32、书写语句完成下面的功能。(1)创建类Classl的一个对象Objectl,定义这个类的一个引用Refl,把对象Objectl的引用赋给Ref1。(2)为类Classl创建一个静态整型变量s_data。答:(1)Class1Object1=newClass1();Class1Ref1=Object1;(2)staticints_data;33、Java中如何定义继承关系?写出定义类库中的类java.awt.Frame的子类MyFrame的类头的语句。答:Java中是通过extends关键字定义继承关系的,其语句的一般格式是:class子类extends父类。importjava.awt.*;classMyFrameextendsFrame34、设父类SuperClass中定义了公共整型属性SuperProperty,SuperClass的子类SubClass中定义了公共整型属性SubProperty,则属性SubClass.SuperProperty是否存在?来自何处?答:存在,这个属性是从其父类那里继承来的。35、什么是多重继承?Java是否支持多重继承?Java采取什么机制来替代多重继承?答:一个子类有多个父类的情况称为多重继承,Java不支持多重继承,Java用实现接口的方法替代多重继承。36、什么是属性(域)的隐藏?答:子类重新定义一个与从父类那里继承来的属性完全相同的属性,称为属性的隐藏。37、一个类里是否可以有同名属性共存的情况?是否最多只能有两个同名的属性。答:子类重新定义父类的同名属性可以实现同名属性共存,若此子类的同名属性又被其子类所隐藏,可以有更多的同名属性共存。38、一个类里有同名属性共存的情况下,如何分别操纵这些同名的属性?答:使用子类定义的方法将操纵子类定义的属性;使用继承自父类的方法将操纵父类定义的属性。-4-39、子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?此时子类中还能找到父类原来的方法吗?答:这种情况称为方法的覆盖,此时,在子类中已不能找到父类原来的方法,它的内存位置已经被替代。40、同名的不同方法共存的情况称为什么?如何区分这些同名方法?答:这种情况称为方法的重载。不同类的同名方法用类名区分,同类的同名方法用形式参数数目、顺序和类型区分。41、Java中的多态有哪些方式?答:Java中的多态有两种方式,第一种是子类对父类方法的覆盖,第二种是同类中方法的重载。42、“重载中,两个同名方法只要返回类型或参数列表不同即可互相分辨”这种说法是否正确?为什么?答:不正确,仅仅返回类型不同不能区分同名方法,必须参数列表不同。43、试解释this和super两个关键字,其中this指代的是一个类还是一个具体的对象?答:this表示的是当前对象本身,即this代表了当前对象的一个引用。super表示的是当前对象的父类对象,是当前对象的直接父类对象的引用。this指代的是一个具体对象。44、子类