山东大学威海JAVA复习答案姜海宁doc.docx
《山东大学威海JAVA复习答案姜海宁doc.docx》由会员分享,可在线阅读,更多相关《山东大学威海JAVA复习答案姜海宁doc.docx(12页珍藏版)》请在冰豆网上搜索。
山东大学威海JAVA复习答案姜海宁doc
第一章
1简述JAVA三个平台的用途
J2ME(JAVAME),嵌入式平台,主要用于功能手机。
J2SE(JAVASE),标准平台,主要用于桌面程序。
J2EE(JAVAEE),企业级web应用平台。
2简述JAVA程序的编译过程
[1]源代码今编译、链接(库文件)3可在JAVA虚拟机上运行的〃中间代码(JAVA字节码)"[2]JAVA虚拟机将JAVA字节码转换成可运行的本机代码。
这种转换有二种方式:
第一种是系统默认的解释型转换JAVA虚拟机一面读字节码一面将其转换为本机代码。
第二种是可选的编译型转换,JAVA虚拟机将字节码一次性转换为本机代码。
3什么是JAVA虚拟机?
偷
JAVA虚拟机是一个程序,它运行在操作系统之上,其主要任势是屏蔽衲机器操作系统和CPU指令的不同,为JAVA字节码提供统一的运行环境。
4JAVA虚拟机有什么作用?
JAVA虚拟机使JAVA程序具备了跨平台(平台无关性)的重要特性,在一个平台上编译好的JAVA字节码,在有相同功能的JAVA虚拟机的另一个平台上可以直接运行,这种技术是借助于JAVA虚拟机和字节码完成的。
JAVA程序的跨平台特,性使之特别适合在复杂的、异构的网络环境中使用。
5跨平台程序和可移植程序的区别是什么?
跨平台程序在某个平台上编译后,在另一个平台上直接可以运行(JAVA要求有相同虚拟机)I不需重新编译。
可移植程序在某个平台编译后生成本机代码,在另一个平台上不能运行,因为操作系统(或CPU指令系统)不同,只有重新编译才能运行。
6JDK安装完成后,安装位置出现以下几个文件夹内容是什么?
文件夹名称
用途
bin
JAVA编译器、解释器等
Src.zip
JAVA核心API的源代码
Demo
教你如何使用JAVAAPI的样例程序
lib
JAVA类库
jre
JAVA运行时环境
include
一些C语言头文件,支持JAVA和C语言混合编程
7JAVA源程序文件名后缀是什么?
字节码文件名后缀是什么?
JAVA源程序文件名的后缀是.java,编译后的字节码文件名后缀是class,
二、网络调研题
1查询JAVA三个平台及Android平台的用途,了解JAVA的应用。
2上网学习eclipse或NetBean的使用。
第二章
1程序的注释应该写什么内容?
注释要说明的是被注释的代码是做什么的,而不是怎么做。
做什么由¥主释说明,怎么做由代码说明。
2强类型编程语言有什么优点?
编译时所有对象类型(除多态对象外)均确定,因此在内存的位置也确定,这可以简化编译器的设计、提高效率、节约资源。
帮助程序员检查一些类型的不匹配引起的错误,消除潜在的危险。
对数据类型检查较完善,适合可靠性要求高的应用。
3理解数组的引用特性
数组是一种引用类型的数据类型,全部存放在内存的堆中。
数组名代表数组在内存中的首地址。
JAVA的数组本质上是一个类。
4理解JAVA〃简单数据类型”的转换规则
简单数据类型由低级到高级分别为:
(byte,short,char)—int—long—float—double
当从低级到高级转换时叫”赋值相容",这种转换是隐式的,不需要特别处理。
对于平级和高级到低级的转换,是"赋值不相容",这种转换是显式的,被转换的数据前面必需加一个〃(类型)"运算符。
5通过示例代码理解JAVA"简单数据类型〃强制转换时潜在的危险。
publicclassConvert
{
publicstaticvoidmain(Stringargs[])
{
doublex=99;
inti=(int)x;
byteb=(byte)i;
System.out・println(b);
}
}
运行结果是:
99。
把x改为99999,运行结果是:
-97。
因为b的类型是byte,只占1字节,数据表示范围是-128—127,当遇到99999时,b溢出了,变成一个莫名其妙的・97。
6JAVA语言自动内存管理的原理和优点是什么?
JAVA语言引用类型的数据都放在堆中,由JAVA的〃垃圾自动回收"机制管理,当某对象长时间不使用,JAVA会按某种算法自动回收该对象占有的堆内存,使堆不容易溢出,程序员无需为堆内存的分配、释放操心。
7new操作符的确切含义是什么?
new操作符的含义为:
为对象在堆中分配内存。
第四章
1什么是类?
什么是对象?
类是对客观世界具有相同特征的一类对象的抽象,是一类问题的解决方案,是一种聚合的、抽象的数据类型,是一种抽象概念。
对象是客观的世界的一个具体事物,是具体的概念,是对〃一类问题〃下的某个具体问题的解决方案。
2对象和类的关系?
类是用户自定义的类型,而对象是类的变量,表示这一类事物下面一个具体事物。
将类的属性集赋不同的值,可以得到不同的对象,解决不同的具体问题。
也可以认为,类是对象的模板,从类中可以〃复制"出对象。
3new操作符和构造方法各自的作用?
new表示给对象在堆中分配内存。
构造方法用于给对象初始化(比如,为属性赋初值),通常是给对象的属性集赋初值,从而产生某个具体的对象。
4构造方法有什么作用?
析构方法有什么作用?
构造方法的功能主要是为对象初始化,通常是给对象的属性集赋初值,从而产生某个具体的对象。
调用析构方法可以销毁对象,使之不占用内存。
5程序员是否可以不写构造方法?
为什么?
程序员可以不写构造方法,系统会给类默认一个构造方法,该构造方法是无参的。
默认构造方法可以给类的属性默认值。
6程序员是否可以不写析构方法?
为什么?
可以。
如果程序员不写析构方法,系统自动默认一个析构方法,在大多数类中,都不需要写析构方法。
多数情况下,析构方法由JAVA的垃圾自动回收机制自动调用。
7理解对象的引用特性。
对象存放在堆中,对象的名字代表对象在内存中的首地址。
8static修饰类的属性和方法,各有什么特点?
用static修饰的属性叫〃静态属性〃。
访问static属性不需要预先实例化对象。
从类中实例化的多个对象共享使用该静态属性的值和其占用的内存。
用static修饰的方法叫〃静态方法〃。
访问static方法不需要预先实例化对象。
9为什么说"static方法体内(包括main()方法体内)不能调用非static方法和属性?
〃因为static可以不经实例化对象,直接用类名方法名()调用,而非static属性和方法则必须先实例化对象才能调用,两者产生矛盾。
10为什么main。
方法是static的?
程序从main()方法启动时,还没有实例化任但I对象,main()方法只能是static的(不需要对象即可调用),然后在main()方法内执行一些实例化对象的操作。
编程题
1上机实验配套的〃课件例题'’提供的关于本章内容的综合性样例程序,并对这些程序做适当改动,观察运行效果。
2写一个Student类,描述Student的属性、方法、构造方法,然后实例化Student类,调用这些属性和方法。
网络调研题
1由于篇幅等原因,本章提供的例题过少,知识点的讲解也不够详尽,请同学们上网找一些适合JAVA编程新手学习的资料,进行补充性阅读。
第五章
1包的逻辑含义是什么?
物理含义是什么?
package意为〃包〃,包的逻辑含义是〃名称空间〃,物理含义是文件夹。
2import有什么作用?
当一个包中的类试图使用另一个包中的类时,必须要使用全名称空间。
使用import在程序的开始处事先导入包,则使用另一个包中的类时可省略全名称空间。
3属性方法有什么好处?
属性的真正名字被隐藏,用户只能通过属性方法的名字来间接访问属性,有利于安全。
当用户通过属性方法间接设置属性时,可以纠正不正常的属性值。
属性方法可以把一个private属性改造成外部对象对其不能读写、只读、只写、可读写。
4把一个private属性改造成外部对象对其只能读,应该怎么做?
如果一个private属性只有相应的get属性方法,则只读。
5方法重载的语义是什么?
方法的重载是重要的封装技术,它使用户误以为只有一个方法,简化用户对类的理解,方便使用。
同时它又是类的多态性的体现,它可以使方法名所代表的概念有不同的实现
方式。
方法的重载是编程务实中常用和重要的技术。
6了解this的用法
this指代"当前对象",语法形式为:
this.对象的属性;this.对象的方法;
this常用于重载的构造方法内部,意为〃调用本类已定义的构造方法〃。
当方法内部的代码中出现了属性与方法的局部变量重名现象,用this区分属性与局部变量。
编程题
1上机练习本章例题
2写一个"手机类〃,列出其常见属性、方法,并用属性方法、重载方法等技术对其封装
Ayr
第八早
1继承的作用是什么?
继承是在一个已有的类的基础上创建新类的机制,使软件模块在原有的基础上实现"可持续性发展"。
继承使子类拥有父类的属性和方法并且增加了子类特有的属性和方法,甚至可以修改覆盖从父类继承来的属性方法。
2子类是否继承了父类private成员?
为什么?
无论何种情况,子类都不能继承private的成员变量和方法,因为父类要有〃隐私权〃。
但是从子类对象的内部构造过程上看,这些private成员又存在于子类对象的空间中,只是子类对象不能直接访问它们。
3在什么情况下,子类需要覆盖父类的属性或方法?
当子类认为父类的属性和方法对自己不适用时,需要覆盖父类的属性和方法。
修改父类是不合适的,因为不满足开闭原则。
子类用相同的属性名重新定义从父类继承来的属性,用相同的方法名(及相同的方法参数)重新定义从父类继承来的方法,重新定义的属性♦VwWwW
和方法只对子类对象有效,而对父类对象无效,这样就满足了"开闭原则〃。
4super有哪2种用法?
当子类重写了父类的属性或方法,用super.方法名()或super.属性名,调用父类继承版的属性或方法。
在子类构造方法中,用super(参数..)指代父类构造方法。
5子类对象实例化调用构造方法的顺序是什么?
子类对象调用父类同名属性或方法的顺序是什么?
子类对象实例化时,按继承链从高到低的顺序调用构造方法。
子类对象对父类同名属性或方法的调用,则是按继承链从低到高的顺序调用。
编程题
1编写一个〃手机类",然后再分别写一个〃功能手机类〃和〃智能手机类〃继承〃手机类〃,要求尽可能多的用到本章所讲的知识点。
第七章
1抽象类和接口语义上最主要的相同和不同点是什么?
(P88)
相同之处:
都用于表示抽象的设计概念,而将具体的实现留给子类。
接口和抽象类体现了软件设计与实现的分离、系统不易变化的部分(设计概念)和易变化的部分(具体实现)的分离。
不同之处:
从设计概念来说抽象类和子类应该是〃子类inakindof抽象类”,并且实现了抽象类”的关系,而接口和子类则不必如此,接口和子类仅仅是"实现关系〃即可。
接口比抽象类更常用。
抽象类不允许多重继承,而接口允许多继承。
2final修饰属性、方法、类,各自的效果是什么?
final修饰类的属性,表示一个常量。
final修饰类的方法,表示该方法不能被子类覆盖(重写X
final修饰类,表示该类是最终类,不能被子类继承。
第八章
1什么是多态?
所谓多态(Polymorphism),字面意思就是〃多种形态"。
面向对象将其解释为〃一个抽象概念,多种具体实现"。
也可以将其理解为:
一种约定,多种不同实现;一个目标,多种不同实现等等。
2编译时多态主要有哪2种?
基于方法重载(overload)的多态
基于属性和方法覆盖(override)的多态
["子类对象即是父类对象"在判读方法返回类型和参数类型上有什么用?
因为子类是父类的一类,具有〃子类对象即是父类对象”的性质,使返回类型和参数类型可以为其子类。
子类对象赋值给父类对象赋值相容,无需强制转换。
比如A,B,C都是F的子类,下列方法:
Ffun(Ff),合法的返回类型和实参类型是什么?
答:
A,B,C和F的对象都是合法的返回类型和实参类型,因为子类对象即是父类对象。
|从语法上说明〃子类对象即是父类对象"在运行时多态的作用。
运行时多态是指,程序在编译时无法确定要调用哪个对象,需要在运行时确定。
这种多态多发生在子类和抽象的父类之间。
实例化对象时使用了〃子类对象即是父类对象〃,调用子类构造方法返回父类对象。
|从语义上说明〃子类对象即是父类对象"在运行时多态的作用。
可以只暴露抽象类,隐藏子类。
用户无需知道子类的位置,完全面向对象。
由于子类对象既是父类对象,父类对象与子类对象之间具有赋值相容性,父类对象能够被赋值为子类对象。
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
赋值之后,父类型的弓I用就可以根据当前赋值给它的子对象的特性以不同的方式运作。
编程题
1【例8-1】是用〃抽象类一子类〃写的,请将其改写为〃接口一子类"
第一章
1API.SDK、JDK、IDE对应的中文名称分别是什么?
API(ApplicationProgrammingInterface),应用程序编程接口
SDK(SoftwareDevelopmentKit),软件开发工具包
JDK(JavaDevelopmentKit),JAVA开发工具包
IDE(IntegratedDevelopmentEnvironment),集成开发环境,
2什么是软件平台?
所谓软件平台,是没有严格定义的概念,平台是一种较基础的、有一定通用性的基础软件,为各种各样的应用程序提供支持环境。
比如说,Windows就是一种平台妇在上面可以运行各种各样的桌面或网页程序。
一般有软件基础架构平台和专用平台。
3JAVAAPI特指什么?
泛指什么?
JAVAAPI特指JAVA平台中的类库部分,泛指JAVA平台全部内部内容。
4J2SE平台主要包括哪些内容?
主要有哪些包,这些包各自主要的用途是什么?
J2SE平台封装了上干个可重复使用的类(包括抽象类和接口),这些是JAVA最基础的类库,它们封装了编程中重要和常用的功能、算法。
1)java.lang这个包包含了一些形成语言核心的类。
2)java.util——这个包主要包括实用程序类和集合框架类。
3)java.applet这个包提供了创建Javaapplet的途径
4)java.awt和java.swingava.awt是由许多组成Java的抽象视窗工具(awt)
的类所组成的包,它提供了基于类的图形用户界面(GUI),主要为桌面应用程序编程提供视窗、按钮、对话框及其他控件。
java.awt是基础的GUI包,当功能有限,而java.swing是建立在awt基础上的功能较强的GUI包。
5)这个包提供了网络、套接字处理器和Internet实用工具类。
6)java.io——这个包中的类提供了输入输出服务,用于读出和写入文件数据,访问键盘输入和打印输出。
6)java.sql——这个包提供了对关系数据库和SQL编程的支持。
主要是通过JDBC(JAVA数据库连接接口)实现JAVA程序与SQL的交互。
5JAVADOC的用途是什么?
要学会使用包中的类,最权威的文档是JAVASEDOC,JAVADOC是JAVAAPI的“使用说明书"。
第二章
1Object是个什么类?
Object类Java最顶层的类,JAVAAPI中所有的类,以及用户自己写的类都是该类的直接或间接子类如果一个类在声明时没有extends其它类则它默认extendsObject。
2Object的equals方法为什么经常被子类重写?
toString方法为什么经常被子类重写?
Object的用法是:
〃两个对象的引用相等才相等"。
有时程序员认为〃两个对象的属性相等也可以认为是相等",这就需要重写Object.equals。
。
toString方法得到一个能代表该对象的字符串。
重写toString方法,让该方法输
出对象的属性值,通常的做法是将对象的属性名和属性值成对的输出。
3Math类的多数方法是static的,这意味着什么?
为了使用方便,该类中的属性和方法都是static的,调用它们可以直接使用:
类名.方法名或类名.属性名,不需要先创建对象。
4JAVA的基本类型为什么要有包装类?
为了使JAVA完全面向对象,满足一些特殊情况(比如集合对象)下编程的需要。
基本类型的"对象〃,只有一个值,没有属性和方法,因此不是真正的对象。
而它对应的包装类对象,不仅有值,而且有属性和方法,是真正的对象。
5有2种方式实例化String对象Stringstr="abc〃;Stringstr=newString(〃abc");
这2种方式的效果有什么区别?
String类有一个〃字符串常量池〃,该池存放了以前创建过的不相同的字符串,第一种方法会在字符常量池中查找是否由匹配的字符串,如果有匹配,则将新字符串对象指向该字符串;如果没有匹配,则在池中创建一个新字符串。
但是当使用new操作符实例化字符串不使用常量池,其性质与用new实例化一般对象相同。
6当使用new操作符实例化字符串:
sl=newString("wearestudents");
s2=newString(〃wearestudents");
si和s2的弓|用不相等(sl==s2返回false).
但是sl.equals(s2)却返回true,这是为什么?
原因是使用new操作符实例化的字符串不使用常量池,new实例化出新的对象,因而引用不同。
第三章
因为JAVA的异常处理机制与C++、MSC#、甚至SQL等语言非常相似,学习它有举一反三的效果,况且异常处理是编程务实中很重要、不能回避的问题,所以对本章的学习要求高一些,要求熟读本章例题,能够结合程序〃动态〃掌握异常处理的语法和语义。
期末考试不会要求你自己写异常处理程序,但会给出一个与本章例题相似的异常处理程序,要求你写出其运行结果,并解释该程序的语法和语义。
第四章
通过阅读本章例题
强化对类的继承、组成、接口及实现等重要的语法问题的理解,组件和事件的概念,了解
GUI编程的大致步骤,包括:
窗口类的继承、组件类及对象、构造方法的作用注册事件,事件处理方法原型与事件监听器接口的关系,事件处理方法体应该怎么写。
了解委托、观察者、分布订阅等重要的设计模式(可以上网查下资料)
代表答案可选,有颜色的题号代表答案不确定
TIPS:
01JAVA源程序文件只能有一个publicclass,类名与文件名相同。
02JAVA是强类型语言,有基本数据类型和引用类型。
默认值0,0.0,null,fulse
03浮点数默认double类型,float要加f。
04引用类型数据的名字代表内存首地址,基本类型数型的名字代表值。
05常量用final修饰,不能重新赋值。
06JAVA只有局部数组没有全局数组,都存放在堆中。
07JAVA本身不支持字符串,通过String类支持。
08JAVA的变量常量和方法等都在类里面。
09方法形参可以是引用类型。
10构造方法没有返回值,名字与类名相同。
11static—静态类一共享值
12名称空间中写类要用package声明,packagesd.wh.iezdefault包无需声明。
13属性尽可能private,用get,set暴露数值。
14方法重载不看返回值类型,构造方法可以重载,析构方法不能重载。
15static方法内不能用this,this指对象。
P71
16继承-classAextendsB一多级继承,单继承一实例化后子类是子类,父类是父类-copy,父类子类数据共存一构造方法不能继承。
17子类实例化必须调用父类构造方法在子类空间中初始化从父类继承来的成员,但不生成父类对象。
18即使子类覆盖父类的属性和方法,子类空间中仍有父类版本的属性和方法。
19super—fg向直接父类。
20抽象类一abstractclassA{}一可有抽象和非抽象方法一只有原型没有实现,子类实现全部抽象方法一不能new实例化一抽象方法只能写在抽象类中。
21接口一interfaceI{},classCimplementsI(}一只有抽象方法和常量一子类继承接口实现其全部方法。
22System.out.println(al);省略了al.toString()o
23包装类一堆中一new一初始值nullo
24string类中的equals比较的是值。
25try{}catch(Exceptione}finally{},finally必执行,一有异常就渺辟专,后面的语句不执行。