java期末复习参考Word文档格式.docx

上传人:b****6 文档编号:16207271 上传时间:2022-11-21 格式:DOCX 页数:16 大小:27.04KB
下载 相关 举报
java期末复习参考Word文档格式.docx_第1页
第1页 / 共16页
java期末复习参考Word文档格式.docx_第2页
第2页 / 共16页
java期末复习参考Word文档格式.docx_第3页
第3页 / 共16页
java期末复习参考Word文档格式.docx_第4页
第4页 / 共16页
java期末复习参考Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

java期末复习参考Word文档格式.docx

《java期末复习参考Word文档格式.docx》由会员分享,可在线阅读,更多相关《java期末复习参考Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

java期末复习参考Word文档格式.docx

}

的确是教材写错了,如按教材所示,下列测试代码:

classStudent_ex{

publicstaticvoidmain(Stringargs[]){

Students1=newStudent("

李小明"

newMyDate(),"

计算机"

);

Students2=newStudent(s1);

//调用拷贝构造方法

System.out.println(s1==s2.);

//false,不是一个对象

System.out.println(s1.name==s2.name);

//true,值相等

System.out.println(s1.birthday==s2.birthday);

//true,引用相等,//说明没有深拷贝

教材那两行代码应改为:

publicStudent(Students)//深拷贝构造方法

{super(s);

//调用父类Person已实现的深拷贝构造方法

this.count++;

//这行可有可无,有则能正确对子类对象计数

则下列测试代码:

//false,引用不相//等,说明有深拷贝

}

P92-93“3.4.2类型的多态”,理解“子类对象即是父类对象(或子类isakindof父类),这个知识点对以后的JAVA高级课程学习至关重要。

P94-95理解多态的toString()和equals()方法。

P95例3-6,阅读理解对象数组,对象作为方法的参数及返回值的设计,这几个知识点对以后的JAVA高级课程学习至关重要。

3.5类的抽象性(本小节不单独出简答题,而是结合代码阅读或编程题去理解概念)

P99例3-7,阅读理解:

怎样写抽象类?

抽象类有什么用(主要是设计与实现分离,抽象方法可以看作是标准)?

多态是怎样实现的?

关键代码是P101④

CloseFigureg=newEllipse(10,30)

这几个知识点对以后的JAVA高级课程学习至关重要。

P101了解最终类和最终方法。

专业英语词汇:

(说出以下词汇的英文名,不需要解释)

类,对象,封装,继承,多态,实例,重载,覆盖,引用(注:

这些单词在课本第三章都找得到)

P102习题3【用绿字标识的习题,不单独出简答题,而是结合代码阅读和编程题理解相关知识点】

3-1[题目及答案略]

3-2答:

基本类型传值,引用类型引传引用(类似与C语言指针或数组作为函数参数)

3-3答:

能。

因为参数是引用类型,修改形参同时也修改实参。

但本例的“交换”只是交换了对象的引用,对象本身还是原地不动。

请写一个程序测试这两个方法。

3-4面向对象的三个核心特性是什么?

答:

封装,继承,多态

3-5什么是封装?

为什么要将类封装起来?

封装的原则是什么?

见P72,理解答案即可,不要硬背。

3-6答:

见P73,P81。

3-7答:

见P73。

另外还和以从继承方面说明

//3-8类中的方法与C++函数的区别是什么?

主要区别是方法从属于类,C++函数可以独立存在。

3-10答:

只需掌握public和private即可。

3-11答:

private只能修饰属性和方法,不能修饰类

3-12答:

语法无错,但设计概念不对。

但属性最好不要public,这首先不符合封装性原则,其次用户直接操作这些属性易造成数值越界(比如day=32)。

应把它们声明为private的,然后声明一些public的get***()和set***()方法,间接操纵属性,好处是对用户隐藏了属性名,符合封装性原则,再者不易造成数值越界。

3-13答:

语法无错,但设计概念不对,应把set()内的

intyear=y;

的int去掉。

因为intyear声明了方法内的局部变量,与属性year无关,这样set()方法不能给属性year赋期望的初值。

比如:

set(1920,10,10),属性year没得到1920,而为默认值0

这个题考的是变量的作用域。

3-14答:

如与13题联系起来看则与13题犯同样错误。

如单独看month,day没有声明类型。

3-15答:

形参中的intday=1是语法错。

3-16答:

引用类型只能判等,不能比较大小。

见教材P72叙述。

//3-17答:

这个题想输出1980-12-10这种格式的日期,中间插入“-”字符串也可以把year,month,day自动转为String类型,教材P62说过,字符串与其它类型+时,可把其它类型自动转为字符串,但“-”字符串应该用双引号而不是单引号。

//3-18答:

参数类型和个数问题,可参见教材在该例题后面的说明。

3-19说明静态成员和实例成员的区别

实例成员(属性/方法)属于对象,只能通过对象名.属性名或对象名.方法名访问。

静态成员(static属性/方法)属于类,即可以按实例成员访问,也可通过类名.属性名或类名.方法名访问。

另外,一个static属性无论创建多少对象,始终只占有一个内存单元,可以作为多个对象的“共享变量”使用。

3-20什么是继承?

继承机制的作用?

子类继承了父类中的什么?

子类不需要父类中的成员怎么办,能够删除它吗?

JAVA允许一个类有多个父类吗?

在已有类的基础上定义新类为继承。

继承机制可以在不修改父类代码的前提下扩展其功能,这对软件的复用和升级维护特别重要。

子类继承了父类中除构造方法以外的所有成员。

子类不需要父类中的某个成员,不能删除它,但可以覆盖(override)它,使其具有新的含意。

JAVA不允许一个类有多个父类。

3-21

public和protected,还有缺省(以包为界)。

见P87“4子类对父类成员的访问权限”

3-22

答:

Object类。

它是所有类的根类。

3-23

见教材第4章有关Object类的讲解

3-24如果子类声明的成员与父类成员同名会怎么样?

参考P88“3.4.1子类重定义从父类继承来的成员”,要点是用super区分子类和父类成员。

3-25super引用有什么作用?

有几种使用方法?

一是调用父类的构造方法(P87),二是区分子类和父类成员

(P88)。

3-26什么是多态性?

什么是方法的重载?

方法的重载和覆盖有何区别?

多态原意为一名字有多种含义,在OO语言中,是指一个方法可以有多种实现,即“一个定义,多种实现”。

方法的重载(overload)是指在一个类里,用不同参数,写若干个同名方法。

这可以简化外界对类的理解,符合类的封装原则,同时重载也是多态的一种。

方法的重载和覆盖(override)主要区别是:

前者发生在一个类内,后者在父类和子类之间。

3-27什么是运行时多态?

方法的重载和覆盖分别是什么时多态?

编译时多态是指编译时即绑定多态对象,又叫静态联编,早绑定。

运行时多态是指运行时才能确定要绑定的对象,又叫动态联编,晚绑定。

方法的重载都是编译时多态,而覆盖分两种情况:

当对象引用本类对象时,是编译时多态,否则(比如父类对象引用子类实例)为运行时多态,运行时多态在JAVA高级编程中特别重要。

[参见P93]。

//3-28

如this是子类对象,则调用子类的howmany();

如this是父类对象,则调用父类的howmany()。

3-29

这个题很有意思,首先

Objectobj=”abc”;

对不对?

Objectobj=newString(”abc”);

全对,因为Object是所有类的父类,子类对象即父类对象,赋值兼容,参见P93“父类对象引用子类实例”。

其次,obj.toString()和obj.length()执行的是那个类的方法呢?

先参见P93“3运行时多态”。

由此可知obj.toString()执行的是String的toString()。

由于Object没有定义length(),String类的length()不是覆盖Object的同名方法,因此obj.length()调用失败。

3-30

此题第二行应改为Stringstr=(String)obj;

写成

Stringstr=obj也可以。

这样就无错了,obj.toString()执行的是String类的toString()。

原因见29题。

//3-31

此题与上面2题应是同一性质的。

//3-32

参见P92“(3)子类继承并重载父类成员方法”

//3-33

这样做不是覆盖(JAVA语法要求方法覆盖时,其方法名称、返回类型及参数类型完全与父类相同),也不是重载(JAVA语法要求方法重载必需是参数类型或个数不同)。

应该是不行,可以上机试一下。

3-34什么是抽象类?

在什么情况下需要设计抽象类?

抽象类是否必需有抽象方法?

abstract声明的类称为抽象类,抽象不能被实例化。

当要表示一个抽象概念,该抽象概念可以有多种实现,可以使用抽象类,这也是多态的一种。

抽象类中可以没有抽象方法。

需要注意的是:

实现抽象类的子类和抽象类之间,应该是isakindof关系,即“子类是父类的一类”,否则应该使用接口。

这是重要的设计概念,不是JAVA语法要求。

3-35什么是最终类?

什么情况下需要设计最终类?

最终类中是否必需有最终方法?

final声明的类称为最终类。

如果一个类不需要被继承,可声明为最终类。

最终方法是用final声明,不能被子类重写的方法,最终类中不必有最终方法。

3-36

除了3-35题的两种用法外,final还可以声明常量。

3-37

抽象类可以有构造方法,但抽象类不能被实例化。

抽象类的构造方法是供子类调用的。

构造方法不能声明为抽象方法,这样的话子类无法调用。

//3-38

不影响运行时多态性。

无论修改与否,父类的area()都没被执行,执行的总是子类的同名覆盖area()。

//3-393-40

这两题在第一章中讲过了。

补充习题:

1.指出下列哪个方法不是publicvoidadd(inta){}合理的重载方法。

____。

A、publicintadd(inta)B、publicvoidadd(inta,intb)

C、publicvoidadd(floata)D、都是合理的。

A

2.下列构造方法的调用方式中,正确的是____。

  A、按照一般方法调用  B、由用户直接调用

  C、只能通过new自动调用  D、被系统调用

C

3.在Java中,能实现多重继承效果的方式是____。

  A、内部类B、适配器 C、接口  D、同步

4.判断以下观点的对错:

(1)重载是编译时多态,又叫对象的静态绑定、早绑定。

而覆盖有时为运行时多态,又叫对象的动态绑定和晚绑定。

(2)重载可以简化对象与外界的接口。

(3)程序的注释要写被注释的代码做什么,而不要写怎么做。

(4)在子类的构造方法中可以使用super调用父类的构造方法。

(5)publicclassMyClassextendsObject和publicclassMyClass两种写法等效。

全对。

5.判断以下观点的对错:

(1)抽象类和接口都不能被实例化;

(2)抽象类可以声明成员变量(属性)和非抽象方法,而接口不能;

(3)抽象类和其子类体现的是继承关系,它们是“一类”对象。

而接口与实现接口的类之间体现的是契约----实现关系,他们往往不是“一类”对象。

(4)Java语言中,类的多重继承只能通过实现多个接口完成。

(5)Java语言中,非抽象类可以继承抽象类,反之亦然。

6.简要回答:

(1)Java关键字final,

如用于修饰变量,则该变量的特点是________________;

如用于修饰方法,则该方法的特点是____________________;

如用于修饰类,则该类的特点是_____________________。

(2)Java关键字static,

如用于修饰类的属性(成员变量),则称为实例成员或静态成员,

其特点是_________________________________________________;

如用于修饰方法,则称为类成员方法或静态方法,其特点是___________________________________________________;

(1)常量,不能被子类覆盖,不能被继承。

(2)该类所有对象共享该成员变量,该方法无需实例化就可用类名.方法名引用。

7.下列代码

  public 

class 

Person

{

  int 

arr[]=new 

int[10];

static 

void 

main(String 

args[])

  System.out.println(arr[1]);

  }

  }

意图是输出arr[1]的值(为0),但程序在编译时报错,错误的原因是什么?

类成员arr[]不是静态的,需要实例化的对象才能被引用。

//8.递归算法的优缺点?

(此题应放在第2章)

递归算法简洁优雅,有的问题也只能用递归算法实现。

缺点是效率低下,占用过多的栈空间易造成栈溢出。

9.什么是JAVA垃圾自动回收机制

内存自动管理技术,可以按某种策略自动回收堆中的无用对象,防止内存溢出。

这是JAVA的重要特性。

//10JAVA垃圾自动回收机制不能回收哪几种对象?

文件,数据库连接,网络连接。

这三种对象必需由程序员显式调用close()方法关闭,close()方法本质上是析构方法(JAVA类析构方法的名字是finalize())。

11.==和equals()有何不同?

==用于基本类型,判断值是否相等,用于引用类型(对象),则判断其引用(地址)是否相当,一般情况下,我们不用==判定对象是否相等,而用equals()方法。

equals()方法原始定义在Object类中,,本意也是判断两个对象引用(地址)是否相当,但Object的子类大都覆盖了这个方法,变为两个对象只要属性值一一相等,就为true。

JAVA期末复习第四章接口、内部类和JAVAAPI基础

这一章不指定阅读范围,只需作下面的重点习题。

P126习题4【用绿字标识的习题,不单独出简答题,而是结合代码阅读和编程题理解相关知识点】

4-1答:

看教材,自已组织答案。

4-2答:

接口是一种引用数据类型,因此能够声明接口对象,接口对象引用实现它的子类的实例,这肯定是运行时多态。

//4-3什么是单重继承?

什么是多重继承?

类的层次体系为什么需要多重继承?

单重继承有什么缺点?

既然有缺点,为什么JAVA仍采用单重继承?

JAVA怎么实现多重继承?

单重继承是一个子类只能有一个父类,多重继承是一个子类可以有多个父类。

编程要解决的一些实际问题本身是多重继承的,单重继承解决这些问题较困难。

JAVA仍采用单重继承,原因主要是编译器实现方便、效率高、可回避多重继承带来的语义歧意等,JAVA允许多重继承接口弥补不能多重继承实类带来的不足。

4-4答:

按P106-107对接口的语法要求核对

4-5说明接口和抽象类(语义)的区别

无需回答语法的区别,只需回答语义的区别。

抽象类与其类应为isakindof的关系,而接口与实现它的子类之间只是“实现或契约”关系。

接口和接口都是概念与实现相分离的机制,这种机制允许“一个概念,多种实现”。

4-8答:

(只需回答第1问)为了使JAVA完全面向对象,方便进行类型转换等。

//4-14答:

泛型是一个需要了解的概念,请参见老师课件第四章PART4。

1类以类之间存在哪几种关系?

常见的有使用,依赖,继承/实现,组成/聚集。

在软件设计中,类之间的关系要尽可能松散(低藕合),所以在设计时,使用优先于依赖,组成/聚集优先于继承/实现。

上述知识属于软件工程,UML语言等课程的内容。

2阅读教师课件第四章PART1,掌握其中的主要概念和术语,期末考试本部分有2到3道简单题。

JAVA期末复习第五章异常处理

P140习题5

1

JAVA采用异常处理机制是为了弥补面向过程(比如C)语言对运行时错误处理能力的不足,其目的是为了给程序员提供便利。

JAVA的异常处理机制通过两方面实现:

一是将常见的运行时错误封装成错误类和异常类(它们是JDK的一部分),二是JAVA语法中的try,catch,finally,throw,throws等关键字。

异常处理机制不能解决程序运行中的所有错误,比如Error类及其子类的错误。

参见P129和P130图5-1。

2答:

上机一试

//3答:

参见P130图5-1

4答:

请自己组织答案。

//5答:

参见P130图5-1或P131

(1),(5)

6答:

try{},catch(){},finally{}语句块,参见P132

//7答:

因为字符串中含有非0-9的字符时不能转成数字,数字转成字串应不会抛出异常。

8答:

9此题如能正常通过编译,则运行时catch(Exceptione)捕获到异常。

此题如不能正常通过编译,则在编译时就会发现NumberFormatException异常。

上机一试。

10答:

如JDK或自定义的异常类确有DateException类,运行时不能捕获异常,因为inti….抛出的异常类型与DateException类型不符。

如没有DateException类,则编译时就会报错“找不到符号”。

11答:

throw在语句中抛出异常,throws在方法声明中抛出异常。

12答:

在方法声明中写throws子句,见P137。

//13答:

前面加上一句importjava.io.*;

再将throw改成throws

14答:

当JDK中的异常类不能满足需要时,可继承Exception类编写自定义异常类,参见p138。

1什么是抛出异常?

创建一个异常类对象叫抛出异常。

JAVA期末复习第六章图形用户界面

这一章不指定阅读范围,只需作下面的重点习题:

P150例6-2。

该例题期末考试必考。

通过阅读此例理解P142-150组件、容器、窗口与面板、框架与对话框、标签、按钮、文本行、布局、事件等概念(无需记忆相关类的方法)。

尤其是单击和窗口事件处理的过程。

//补充教材:

GUI程序编写的两个问题,该部分不在期末考试范围之内。

1怎样写事件处理方法(有关MVC的一些知识)

JAVAGUI程序不难写,把界面布局好了以后,注册事件、写事件处理方法就可以了,界面布局代码很繁杂,但小学期JAVA实训的时候会发现,使用eclipse等高级的开发工具,这部分代码几乎不需要写,用组件拖放操作eclipse可以自动替你写,事件的注册和事件处理方法声明eclipse可以自动替你写。

程序员似乎只需填写事件处理方法就可以了,这给新手造成一个错觉,以为所有的算法都可以写在事件处理方法内部,使代码“陀“成一堆,非常不清晰。

下面再阅读一下P150例6-2。

这个程序有什么毛病呢?

在事件处理方法中,实现转换的那几行代码是与界面显示无关的,它们是算法部分。

这个例子的算法只有几行代码,这样写说得过去,但如果算法有几十行几百行呢?

如果算法很多呢?

要单独给算法写一个类,在事件处理方法中调用这个类。

有些同学知道三

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1