Java语言自主学习手册答案1.docx
《Java语言自主学习手册答案1.docx》由会员分享,可在线阅读,更多相关《Java语言自主学习手册答案1.docx(16页珍藏版)》请在冰豆网上搜索。
Java语言自主学习手册答案1
Java语言自主学习手册答案(上)
[ppt_7]:
Java类库API
JavaAPI是SUN提供的用Java语言开发的类集合。
[ppt_12]:
Java与C++比较
语言
Java
C++
直译式语言
是
编译式语言
编译后产生机器码
产生近似于机器码字节码
是
跨平台
是
根据平台作改变
运行速度
较慢
快
具有指针类型
使用对象实例替代指针
是
继承
单继承
多继承
[ppt_17]:
Java虚拟机
▪Java编译器针对Java虚拟机产生class文件,因此是独立于平台的
▪Java解释器负责将Java虚拟机的代码在特定的平台上运行
[ppt_31]:
主方法
JavaApplication程序的入口是main()方法
[ppt_32]:
源文件
–Java程序的源文件扩展名必须是“.java”
–Java程序的源文件名必须与main()方法所在类名相同
–Java源文件中可以包含多个类
程序内容
–由方法体实现程序要完成的功能,方法的实现由一个个语句组成
–语句以“;”作为结束标志
–严格区分大小写
[ppt_33]:
命名
–如果.java文件包含一个public类,它必需按该类名命名
–如果一个类中含有main()方法,它必需按该类名命名
–文件名、类名严格区分大小写
类个数
一个源文件中允许有多个类,但只能有一个public类其它类的个数不限
[ppt_37]:
JavaApplet
•Applet就是使用Java语言编写的一段代码,它可以在浏览器环境中运行
•Applet类存于java.applet包中,是java.awt.Panel的子类。
它与Application的区别主要在于其执行方式的不同
•Application是从其中的main()方法开始运行的
•Applet是在浏览器中运行的,必须创建一个HTML文件,通过编写HTML语言代码告诉浏览器载入何种Applet以及如何运行
[ppt_39]:
JavaApplet
–code:
包含applet字节码的文件名
–height:
执行时在屏幕上打开的高度
–width:
执行时在屏幕上打开的宽度
[ppt_47]:
逻辑型
•boolean类型适于逻辑(布尔型)运算,一般用于程序流程控制
•boolean类型数据只允许取值true或false,不可以0或非0的整数替代true和false
[ppt_48]:
字符型
•char型数据用来表示通常意义上“字符”
•字符常量是用单引号括起来的单个字符
•Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示
•Java语言中还允许使用转义字符'\'来将其后的字符转变为其它的含义
[ppt_53]:
直接量与常量
•直接量:
在程序中直接给出的一个符号串,作用是为变量赋值或参与表达式运算
•常量:
用final说明的一个标识符
[ppt_55]:
Java引用类型
•Java语言中除8种基本数据类型以外的数据类型称为引用类型
•引用类型数据以对象的形式存在
•引用类型变量的值是某个对象的句柄(存储地址),而不是对象本身
•声明引用类型变量时,系统只为该变量分配引用空间,并未创建一个具体的对象
[ppt_57]:
对象的构造和初始化
1.为引用类型变量分配引用空间
MyDatem;
m
[ppt_58]:
对象的构造和初始化
2.创建新对象
–为新对象分配内存空间
–进行属性(实例变量)的默认初始化
[ppt_59]:
分配内存:
newMyDate(1,8,2003);
默认初始化:
显式初始化:
[ppt_61]:
3.调用所属类的构造方法
newMydate(1,8,2003);
[ppt_62]:
4.为引用类型变量m赋值
[ppt_63]:
常量
•常量一经建立在程序运行的整个过程中都不会改变
•Java中常用的常量有布尔常量、整型常量、字符常量、字符串常量和浮点常量
•字符常量用单引号引起来表示单个字符
•字符串常量用双引号引起来表示一串字符
[ppt_66]:
Java变量
变量用于记录数值可变的数据
按所属的数据类型划分
–基本数据类型变量
–引用数据类型变量
按被声明的位置划分
–局部变量:
方法或语句块内部定义的变量
–成员变量:
方法外部、类的内部定义的变量
[ppt_69]:
成员变量声明和初始化
•成员变量在类的定义中声明
•在创建对象的同时创建有关的成员变量
•成员变量创建后系统自动对其进行
–默认初始化
–显式初始化
[ppt_70]:
变量作用域
•局部变量的作用域就是它所在的方法或语句块
•在程序调用方法(进入语句块)时,局部变量才被创建并可用,随方法(语句块)的退出,局部变量将被销毁
•成员变量依附于对象(局部变量)存在,具有与对象相同的生存期和作用域
[ppt_74]:
关键字
•所有Java关键字都是小写的
[ppt_90]:
强制类型转换
对强制类型转换的限制:
整型与浮点型可以相互转换,但基本类型和数组、对象等复合类型之间不能互相转换
[ppt_99]:
数组元素的默认初始化
数组是引用类型,它的元素相当于类的成员变量
[ppt_100]:
数组元素的引用
–数组元素下标从0开始
–长度为n的数组合法下标取值范围:
0~n-1
[ppt_153]:
类的概念
•类是现实世界中实体的抽象集合,是封装了数据和其上操作的复杂的抽象数据类型,类具有完整的功能和相对的独立性,可以包含丰富的内涵、更好的安全性和更大的功能
•定义类的过程就是定义类的属性和服务的过程
•类包括对象生命周期中的要用到的所有代码,构造方法、变量的声明、方法的声明等
•类中直接声明的变量(属性)称为成员变量,方法称为成员方法
[ppt_160]:
对象生命周期
•创建对象
•使用对象
•清除不用的对象
[ppt_161]:
创建对象
创建对象的三个步骤
•声明
•实例化
•初始化
[ppt_162]:
对象的回收
•Java运行环境当确定某个对象不再被使用时,将其删除
一个对象在没有引用指向它时,可作为垃圾收集
•Java运行环境中的垃圾搜集器周期性地释放不用对象占用的空间
[ppt_164]:
•类的方法
–称为成员方法,用来规定类属性上的操作,实现类内部功能机制,是类与外界进行交互的窗口
[ppt_165]:
关键字static
•static称为静态修饰符
•在Java类中声明属性、方法和内部类时,可使用关键字static做为修饰符
•static标记的属性或方法由整个类(所有实例)共享,如访问控制权限允许,可不必创建该类对象而直接用类名加‘.’调用
[ppt_166]:
类属性
•类属性是类的属性,不属于任何一个类的具体对象,即对于该类的任何一个具体对象而言,类属性是一个公共存储单元,任何一个对象访问或修改它,都针对同一存储单元
•类属性由该类的所有实例共享
[ppt_168]:
类属性
•类属性在加载该类时,只分配一次空间,并初始化
[ppt_169]:
类属性
•类变量可用来在实例之间进行通信或跟踪该类实例的数目
[ppt_170]:
类属性
•类属性可以是public或private
•对于public类型的类属性,可以在类外直接用类名调用而不需要初始化
[ppt_172]:
类方法
•在方法前加入static标识符,即为类方法
•类方法是属于整个类的方法
•类方法可以在不产生对象的情况下直接以类名来调用
•非static的方法是属于某个对象的方法,在这个对象创建时对象的方法在内存中拥有自己专用的代码段
•static方法只能处理static的成员属性
[ppt_174]:
类方法
在类方法内部不能对实例变量和实例方法进行访问
[ppt_175]:
类方法
•在类方法内部不能使用this关键字
•this表示调用该方法的对象,而类方法不需要利用对象进行调用
[ppt_177]:
静态初始化器
•由关键字static引导的语句块(语句组)
•存在类的定义体中、方法的外部
[ppt_179]:
静态初始化器与构造方法
•构造方法是对每个新创建的对象初始化,静态初始化器对每个类初始化
•构造方法在new运算符产生新对象时由系统自动执行,静态初始化器所属类加载内存时由系统调用运行
•静态初始化器不是方法
[ppt_182]:
关键字abstract
•abstract是抽象修饰符
•加入abstract的类称为抽象类
•加入abstract的方法称为抽象方法
[ppt_183]:
抽象类
•含有抽象方法的类必须被声明为抽象类,并在类定义关键字class前加入abstract修饰符
•抽象类必须被继承
•抽象方法必须被重写
•抽象类不能被实例化,一般可利用其子类的实例进行实例化。
[ppt_184]:
抽象类
•抽象类的实例变量可以指向具体的一个子类的实例
[ppt_185]:
抽象方法
•一个方法只有声明部分而没有方法的实现,该方法叫做抽象方法
•抽象方法必须用abstract来修饰
•抽象方法必须以分号“;”作为结束标志
[ppt_187]:
关键字final
•final是最终修饰符
•final可以修饰类、属性和方法
•final修饰的类称为最终类
•final修饰的方法称为最终方法
•final标记的变量(成员变量或局部变量)即称为常量
•final标记的类不能被继承
•final标记的方法不能被子类重写
[ppt_188]:
关键字final
•final标记的成员变量必须在声明的同时或在每个构造方法中显式赋值,然后才使用
•常量只能赋值一次,一般大写
•被定义成final的类不能有子类
[ppt_190]:
终结器
•在面向对象程序设计中,对象与单纯的变量一样,有其产生和消亡的过程,当一个对象不再有用时应该回收它(释放其所占用内存空间及其他资源)
•终结器是回收对象时执行的方法
[ppt_202]:
类的继承
•Object类是所有Java类的最高层父类
•Java只支持单继承,不允许多重继承
–一个子类只能有一个父类
–一个父类可以继承出多个子类
•一个类实现了多个接口,达到多继承效果
[ppt_203]:
类的继承
•子类中只需声明特有的东西
•带private修饰符的属性、方法是不能被继承的,子类从父类继承所有非私有域(非private)的属性和方法作为自己的成员
•构造方法不能被继承
[ppt_204]:
类的继承
•在方法中调用构造方法用this()
•调用父类的构造方法用super()
•Java中任何一个子类的实例都可作为父类的实例使用,可调用父类具有的方法
[ppt_205]:
关键字this
•this代表其所在方法的当前对象
–构造方法中指该方法所创建的新对象
–普通方法中指调用该方法的对象
•“this.属性”和“this.方法”表示调用当前对象所属类的属性和方法
•“this()”表示调用当前对象所属类的构造方法
[ppt_212]:
属性的继承
•子类可以继承父类非私有的所有属性,而父类非私有的所有属性是所有子类都拥有的属性的集合
[ppt_213]:
属性的隐藏
•属性的隐藏:
子类重新定义一个与从父类那里继承的属性变量完全相同的变量
[ppt_214]:
属性的隐藏
•当子类执行继承自父类的方法时,处理来自父类的变量
•当子类执行自己定义的方法时,处理自己定义的变量
[ppt_217]:
方法的重写(覆盖)
•概念:
在子类中可以根据需要对从父类中继承来的方法进行改造
[ppt_218]:
方法的重写(覆盖)
•重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型
•重写方法不能使用比被重写方法更严格的访问权限,即方法的访问权限不能缩小
[ppt_223]:
方法的重载
•参数列表必须不同,以此区分不同方法体
•返回类型、修饰符可相同或不相同
[ppt_224]:
指代关键字
•null:
代表“空”,定义一个对象且尚未开辟内存单元时,这个对象为null
•this:
用来指代当前对象
•super:
用来指代父类对象
[ppt_225]:
this关键字
•this表示的是当前对象本身,即this代表了当前对象的一个引用
•利用这个引用可以访问对象、修改对象的属性、调用对象的方法
[ppt_227]:
super关键字
•super表示的是当前对象的直接父类对象,是当前对象的直接父类对象的引用
•super可用于访问父类中定义的属性
•super可用于调用父类中定义的成员方法
•super可用于在子类构造方法中调用父类的构造方法
•super的追溯不仅于直接父类
[ppt_232]:
构造方法
•构造方法重载,参数列表必须不同
[ppt_233]:
构造方法重载
•可以在构造方法的第一行使用this关键字调用其它(重载)的构造方法
[ppt_243]:
调用父类构造方法
•在子类的构造方法中可使用super(参数列表)语句调用父类的构造方法
•如果子类的构造方法中没有显示地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则系统默认调用父类无参数的构造方法
•如果子类构造方法中既未显式调用父类构造方法,而父类中又没有无参的构造方法,则编译出错
[ppt_244]:
构造方法的继承
•子类继承父类所有的成员变量和成员方法,但不继承父类有参数的构造方法
[ppt_245]:
构造方法的继承
•如果子类没有自定义构造方法,则继承父类的无参数构造方法
•如果子类自定义了构造方法,创建新对象时,先执行继承自父类的无参数构造方法,再执行自定义构造方法
•对于父类中有参数的构造方法,子类可以在自己的构造方法中利用super调用,super必须是构造方法的第一个可执行语句
[ppt_251]:
多态性
•在Java中,子类的对象可以替代父类的对象使用
•一个对象只能有一种确定的数据类型
•一个引用类型变量可能指向(引用)多种不同类型的对象
[ppt_253]:
多态性
•一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法
[ppt_254]:
多态性
•方法声明的参数类型为父类类型,可以使用子类的对象作为实参调用该方法
[ppt_258]:
接口
•定义:
把用于完成特定功能的若干属性组织成相对独立的属性集合,凡是需要实现这种特定功能的类,都可以继承这个属性集合并在类内使用它,这种属性集合就是接口
•接口是抽象方法和常量值的定义的集合
[ppt_259]:
•接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
•一个接口中所有成员方法都是抽象的,所有成员变量都被定义为publicstaticfinal
•接口不属于类层次结构。
不相关的类可以实现相同的接口
•多个无关的类可以实现同一个接口
•一个类可以实现多个无关的接口
•接口与实现类之间存在多态性
[ppt_263]:
接口
•可以通过实现接口实现多重继承:
一个类可只继承一个父类,并实现多个接口
[ppt_266]:
接口用法总结
•通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系
•通过接口可以指明多个类需要实现的方法
•通过接口可以了解对象的交互界面,而不需了解对象所对应的类
[ppt_267]:
包
•包(package)是相关类与接口的一个集合,它提供访问控制与命名空间管理
包机制的好处
•程序员容易确定包中的类是相关的
•程序员容易根据所需的功能找到相应的类
•每个包都创建一个新的命名空间,因此不同包中的类名不会冲突
•同一个包中的类之间有比较宽松的访问控制
[ppt_268]:
创建包
•包定义语句在每个源程序中只能有一条,即一个类只能属于一个包
•包定义语句必须在程序的第一行(之前可有空格及注释)
•包名用“.”分隔
[ppt_269]:
创建包
•在缺省情况下,系统会为.java源文件创建一个无名包,该.java源文件中定义的所有类都隶属于这个无名包,它们之间可以相互引用,但不能被其它包所引用
[ppt_270]:
包的引用
•对于同一包中的其它类,只需在要使用的属性和方法名前加上类名作为前缀即可
•对于其它包中的类,则需要在类名前加上包名前缀,这种引用称为长名引用
•只有public类型的成员才能被包外的类访问,访问要通过以下方法:
[ppt_273]:
编程中的错误
•错误分为编译错误和运行错误
[ppt_276]:
异常和异常类
Java中定义了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息和处理错误的方法等内容
[ppt_280]:
异常的类型
•异常总是java.lang包中的标准类Throwable的一些子类对象
•所有标准异常都由Throwable类的两个直接子类涵盖,分别为Error和Exception类
[ppt_284]:
违例(Exception类)
•要么在该方法中处理异常
•要么记录下方法可能产生的异常,并抛出这种异常
[ppt_287]:
异常处理
•这种异常对象有相关的数据成员存储着故障的情况,一般称抛出(throw)异常,也就是抛出包含异常情况的对象
•该异常对象可以作为参数,传递给专门为处理相关问题而编写的程序代码,接收异常对象作为形式参数的代码称为捕获(catch)了异常
•如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出
[ppt_305]:
声明抛出违例
•一个方法中的语句在执行时,可能生成某种违例,但是并不能确定如何处理这种违例,则此方法应声明抛出违例
•表明该方法将不对这些违例进行处理,而由该方法的调用者负责处理
[ppt_307]:
抛出违例
•首先要生成异常对象,然后通过throw语句实现抛出操作(提交给Java运行环境)
•可以抛弃的例外必须是Throwable或其子类的实例
•如果一个例外在返回到main()时还未被处理,则程序将非正常终止