《2022年自考《Java语言程序设计》串讲笔记 .pdf》由会员分享,可在线阅读,更多相关《2022年自考《Java语言程序设计》串讲笔记 .pdf(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、- 1 - 自考串讲笔记1.1 Java 语言的特点Java 语言最初的应用对象是消费性电子产品。最初的名字是Oak语言。Java 语言是适用于分布式计算环境的面向对象编程语言,它虽类似于C和 C+ ,但比 C+简单,忽略了许多为提高计算效率但初学者较难掌握的程序语言特性。Java 语言主要有以下特点:强类型。编译和解释:Java 语言是一种高级编程语言,用Java 语言编写的源程序在计算机上运行需要经过编译和解释执行两个严格区分的阶段。Java 的编译程序先将Java 的源程序翻译成与机器无关的字节码,不是通常的编译程序将源程序翻译成特定计算机的机器代码。运行时, Java 的运行系统装载和
2、链接需要执行的类,并作必要的优化后,解释执行字节码程序。自动无用内存回收功能,没有指针,数组元素都要检查下标是否越界。面向对象。与平台无关:在任何平台上,Java 源程序被Java 编译器译成虚拟机能够识别的字节码。这样,只要有Java 虚拟机的平台,就能解释执行Java 字节码程序,从而实现Java 程序与平台无关。安全性。分布式计算。多线程。1.2 Java 应用程序和小应用程序Java 程序可以是独立的应用程序,也可以是能在浏览器上执行的小应用程序(Applet )。两种 Java 程序都由一个或多个扩展名为“. class ”的文件组成,而且都需要Java 虚拟机(jVM)载入并翻译。
3、两种程序的主要区别是:小应用程序只能在与Java 兼容的容器中运行,可以嵌入在HTML网页内,在网络上发布,当网页被浏览时,在浏览器中运行,小应用程序的运行还受到严格的安全限制,例如:它不能访问用户计算机上的文件。Java 应用程序没有这些限制,也不支持网页嵌入和下载运行。小应用程序和应用程序在代码编写上也有很大差异。一个小应用程序必须定义成一个Applet类的子类。应用程序可以是Applet类的子类,也可以不是。应用程序必须在一个类中定义一个main() 方法,该方法代表应用程序的入口。而小应用程序不必定义 main()方法,它的执行由Applet类中定义的多个方法控制。Java 源程序命名
4、受到严格的限制:Java 源程序的扩展名必须是“.Java ”,而源程序经过编译后得到的应用程序文件名(即字节码文件)的主文件名和源程序中的类名一样,而扩展名是“. class ”。如果源文件中多个类,那么最多只能有一个public类;如果源文件中有public类,那么源文件的名字必须与这个类的名字完全相同。如果源文件没有public类,那么源文件的名字只要和某一个类的名字相同即可。Java 程序中经常会出现注释。注释是程序中的说明文字,用于帮助阅读程序,它不是语句,不会影响程序的执行效率。Java 语言的注释有三种形式:行注释( / ):用于简短地说明前面代码的意义或功能。注释内容到行末,不
5、能跨行。块注释( /*/):是多行注释,用于说明下面程序段的算法、功能等,块注释不可嵌套使用。文档注释( /*/):能被实用程序(命令)Javadoc 接受,由它能自动生成程序的HTML文档。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 33 页 - - - - - - - - - - 2 - 1.3 Java 程序的开发过程(以下以SUN公司的 JavajDK 为例)对于 Java 应用程序,先编写Java 源程序,源程序经Java 编译器( Javac.exe )编
6、译后产生字节码文件,最后由Java 解释器( Java.exe )解释执行字节码文件。对于小应用程序,先编写Java 源程序,源程序经Java 编译器编译后产生字节码文件,最后由Web浏览器( appletviewer.exe)解释执行字节码文件。编译器和解释器的使用格式是:Javac 选项 源文件(其中源文件是“.Java ”文件) Java 选项 类名 参数 (类名指定的必须是含有main() 方法的类,即是一个Java 应用程序)通常情况下用的比较多的开发环境有 Eclipse,jBuilder等。1.4 标识符和关键字Java 语言使用Unicode 字符集,共有65535 个字符。J
7、ava 标识符用于命名程序对象。Java 语言的标识符可以按以下规则任意命名: 由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成。 限定标识符的第一个字符不能是数字字符。除了按上述规则命名标识符外,另外还有命名的习惯约定(行业习惯,不是规定):一般变量名、方法名用小写英文字母开头,类名首字母用大写字母,若命名由若干个单词组成,后面的每个单词用大写开头;文字和常数全用大写字母命名;包名全部用小写字母。Java 关键字:关键字是一些英文单词,在语言中,关键字已经被赋予特定的意义,不能用这些关键字作为标识符命名程序对象。关键字全部由小写字母组成。每个关键字在程序中出现,均有特定位置和
8、特定使用方法的要求。1.5 基本数据类型Java 语言是强类型语言,每个变量和表达式都有确定的类型,在变量赋值时要进行类型兼容性检验。数据类型可分为非基本数据类型和基本数据类型两大类。非基本类型也称为复合数据类型,是由基本类型组合的新类型。非基本数据类型分为:数组、字符串、类、接口。基本数据类型也称为原始数据类型,是系统预先规定的一些常用类型。它们是:整数类型、浮点数(实数)类型、字符(文字)类型、逻辑类型(布尔型)。逻辑类型用关键字boolean 标识,所以也称为布尔型。逻辑类型只有真(true )和假(false )两个值。字符类型用关键字char 标识。字符型数据是一个字符,内部表示是字
9、符的Unicode 代码,共有 65535 个不同的字符。在Java 程序中,字符常量有普通字符常量(用单引号括住一个字符)和转义字符常量(用开头后跟特定字符或字符串)两种。整数类型是指不带小数点和指数的数值数据。由于计算机只能表示整数的一个子集,表达更大范围内的整数需要更多的二进制位,Java 语言将整数数据按数值范围大小不同分成四种:基本型用关键字int标识, 4 个字节, 32 位,取值范围是 -231231-1 ;短整型用关键字short标识, 2 个字节, 16 位,取值范围是-215215-1 ;字节型用关键字byte 标识, 1 个字节, 8 位,取值范围是-2727-1 ;长整
10、型用关键字long 标识(或者在常数后加L 或 l 标识), 8 个字节, 64 位,取值范围是-263263-1 。每种整数类型处理不同范围的整数值,并且都是带符号的。整型常量有十进制、八进制(以数字符0 开头)和十六进制(以0 x 开头)三种写法。浮点数类型也称为实型,浮点数是带小数点或指数的数值数据。Java 语言的浮点数有单精度和双精度两种。单精度型用关键字float标识,占4 个字节, 32 位。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 33 页 - -
11、- - - - - - - - 3 - Float型常量的书写方法是在实数之后加上字母F或 f 。双精度用关键字double 标识,占8 个字节, 64 位。 double 型常量的书写方法有两种:一种写法是直接写一个实数,或在实数后加字母 D或 d。另一种是科学计数法,用10 的方幂(用字符e 或 E表示幂底10)。2.1 数据运算Java 语言的基本运算可分成以下几类:赋值运算、算术运算、自增和自减运算、关系运算、逻辑运算、条件运算和字符串连接运算等。2.1.1 赋值运算在 Java 语言中符号“ =”是赋值运算符不是“相等”运算符(相等运算符是“= = ”见关系运算符的叙述)赋值运算分为
12、两类:一是简单赋值运算;二是复合赋值运算。1. 简单赋值运算简单赋值运算的一般形式如下:变量表达式赋值运算的执行过程是:(1)计算赋值运算符右端的表达式。(2)当赋值运算两侧的类型不一致时,将表达式值的类型自动转换成变量的类型。(3)将表达式的值赋值给变量,即存储到与变量对应的存储单元中。这里的类型转达换是指数值数据的类型自动转换,这样的自动转换只能是简单类型向复类型转换,不能从复杂的转换成简单的。即如下所示的从左到右转换。byte short int long float doubleJava 语言约定赋值运算也有值,它的值就是赋予变量的值,因此,赋值运算的结果可以继续赋值。int j;do
13、ubley=2.0 ;y=j=3 ; j 的值为 3,y 的值为 3.0 赋值运算符结合性“自右至左”当连续有多个赋值运算时,是从右至左逐个赋值。2. 复合赋值运算这类运算的特殊性点是:变量即要参与运算,又要接受赋值。为避免对同一个变量的地址重复,计算引入复合赋值运算符。常用的复合赋值运算符有:+=、-=、 /= 、%= 。2.1.2 算术运算算术运算要求运算分量的类型是数值类型的(整数类型和浮点数类型)。运算时,只需一个运算分量的是单目运算,需两个运算分量的是双目运算。特别的:(1)“ / ”为除法运算符,当除数和被除数均为整数类型数据时,则结果也是整数类型数据。例如 7/4 的结果为1。(
14、2)“ % ”为求余数运算符,求余数运算所得结果的符号与被除数的符号相同。例如5%3的结果为 2, -5%3的结果为的结果为3。2.1.3自增和自减运算自增运算符“ +”和自减运算符“- ”是单目运算符,要求运算分量是数值类型的变量,其作用是使变量的值增1 或减 1,这两个运算符与变量结合有以下四种可能形式:+i 前缀形式,表示在引用变量i 之前,先使i 加 1,以加 1 后的 i 值为运算结果。-i前缀形式,表示在引用变量i 之前,先使i 减 1,以减 1 后的 i 值为运算结果。i+ 后缀形式,表示在引用变量i 之后,才使i 加 1,即以增1 前的 i 值为运算结果。i- 后缀形式,表示在
15、引用变量i 之后,才使i 减 1,即以减1 前的 i 值为运算结果。例如:i=4 ;j=+i ; i 结果为 5,j 的结果为5 i=4 ;j=i+ ; i 的结果为5,j 的结果为4 i=4 ;j=!i; i 结果为 3,j 的结果为3 i=4 ;j=i!; i 结果为 3,j 的结果为4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 33 页 - - - - - - - - - - 4 - 上述例子说明,对变量采用自增(或自减),用前缀形式或用后缀形式,对变量本身来
16、说,效果是相同的,但表达式的值不相同。前缀形式是变量运算之后的新值,后缀形式是变量运算之前的值 . 自增自减运算能使程序更为简洁和高效,但在使用时需注意“+”和“ ! ”运算的运算对象只能是变量,不能是常量或表达式. 例如, 4+或( i+j )+都是不合法的 . 2.1.4 关系运算关系运算对左右两侧的值进行比较,如果比较运算的结果成立,则值为true ,不成立为false 。关系运算符的优先级别不完全相同。、=的优先级高于 =、!= 。关系运算符的优先级低于算术运算符的优先级。2.1.5 逻辑运算逻辑运算用来描述表达式,实现连续多个条件的逻辑与、逻辑或、逻辑否定的判定。有3 个逻辑运算符:
17、 & (逻辑与)、(逻辑或)、! (逻辑否定)其中:运算符 和是双目运算符,运算符! 是单目运算符。逻辑运算的操作数必须是布尔型的,结果也是布尔型的。逻辑否定“ ! ”的优先级高于算术运算符的优先级。逻辑与“ & ”和逻辑或“”的优先级低于关系运算符的优先级。需要特别指出的是,逻辑与和逻辑或运算符有以下性质,Java 语言利用这些性质,在进行连续的逻辑运算时,不分逻辑与和逻辑或的优先级进行计算,而是顺序进行逻辑与和逻辑或的计算,一旦逻辑子表达式或逻辑表达式能确定结果,就不再继续计算。(1)对表达式ab ,当 a 为 false时,结果为false ,不必再计算b;仅当 a 为 true时,才需
18、计算 b。(2)对表达式ab,当 a 为 true时,结果为true ,不必再计算b;仅当 a为 false时,才需计算 b。例如:设有a=b=c=1,计算 +a=1|+b=1,变量 a 的值变为2,+a=1 为 true ,整个逻辑表达式的值已经为true ,不再计算右边的子表达式+b+c。因而,变量b 和变量 c 的值不变,仍为1。2.1.6 条件运算(?:)条件运算是一个三目运算符,一般形式为:逻辑表达式?表达式1:表达式2 2.1.7 其他运算1. 位运算位运算的运算分量只能是整型数据,位运算把运算对象看作是由二进制位组成的位串,逐位完成指定的运算,得到一个新的位串。位运算符有4 个,
19、按优先级从高到低顺序,依次为:(位反)、 &(位与)、 (位异或)、|(位或)用位运算的组合可以用来描述各种特殊的位串运算。例如,位运算表达式(k-1 )&k能取下非 0 的整型变量k 的最右边为1 的那一位。2. 移位运算移位运算是将整数作为二进制位的位串向左或向右移动。移位运算符有三个,它们是:左移运算符( )、逻辑右移运算符( )移位运算有两个运算分量,左运算分量为移位的数据对象,右运算分量的值为移位位数。移位运算符的优先级低于算术算符,高于关系运算符,它们的结合方向是自左至右。Java 语言允许数值型数据混合运算,不同类型的数值数据混合运算时需要类型转换。对于数据表示字节数少的类型数据
20、转换成数据表示字节数较多的类型数据,系统能自动实现转换。反之,例如,将一个long 类数据转换成int型数型,这种数据类型转换必须采用类型强制转换。类型强制转换称作造型(cast ),书写格式为:(类型)表达式2.2 语句名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 33 页 - - - - - - - - - - 5 - 在 Java 语言中,语句分为基本语句、控制结构语句以及package 语句和 import语句等。其中控制结构语句包括复合语句、if语句、 swi
21、tch语句、循环语句和try.catch语句。其中循环语句有 while语句、 do.while语句、 for语句三种。2.2.1 基本语句基本语句主要有表达式语句、空语句、break 语句、 continue语句、 return语句等。1. 表达式语句在赋值表达式、自增自减表达式和方法调用表达式之后加上分号即变成语句,称它们是表达式语句。另一个典型的表达式语句是方法调用表达式之后接上分号。2. 空语句空语句是只有一个分号的语句,其形式为;实际上,空语句是什么也不做的语句。语言引入空语句是出于以下实用上的考虑。例如,循环控制结构的句法需要一个语句作为循环体,当要循环执行的动作由循环控制部分完成
22、时,就不需要有一个实际意义的循环体,这时就需要用一个空语句作为循环体。另外,语言引入空语句使序列中连续出现多个分号不再是一种错误,编译系统遇到这种情况,就认为单独的分号是空语句。3.break语句break 语句必须出现在多路按值选择结构或循环结构中。break 语句的执行强制结束它所在的控制结构,让程序从这个控制结构的后继语句继续执行。4.continue语句continue语句只能出现在循环结构中,continue语句的执行将忽略它所在的循环体中在它之后的语句。简单地说, continue语句提早结束当前轮次循环,进入下一轮次循环。2.2.2 复合语句在 Java 语言中,用花括号括住一个
23、顺序执行的计算步骤序列描述顺序结构,这样的顺序结构称作复合语句。复合语句中的每个计算步骤可以是单个语句,也可以是一个控制结构,特别情况也可以为空。2.2.3 if语句有两种选择控制结构:两路条件选择结构(用if语句描述)和多路按值选择结构。2.2.4 switch语句在 Java 语言中,用switch语句描述多路按值选择结构。switch语句包含一个表达式,用于按表达式值的不同作相应选择。另外,还有一系列由case 开头的子句和一个可选用的default开头的子句,每个子句有一个可能为空的语句序列。正确编写switch语句有以下几个要求:(1)switch后面括号内的表达式的类型只限于cha
24、r 、int 、short和 byte 。(2)所有 case 后的常量表达式的值互不相同,类型与switch后括号内的表达式类型一致。(3)语句序列由任意条合法的Java 语句构成,也可以没有语句。(4)default子句可以缺省,但至多出现一次,习惯总是将它写在所有case 子句之后,如有必要也可写在某个case 子句之前。(5)如果要使各种情况互相排斥,仅执行一个子句的语句序列,每个子句都需要以break 语句结束。2.2.5 try.catch语句Java 语言提供了一种称为异常的机制协助程序报告和处理错误。程序不必用特别的语句对异常预先进行检测,而是当异常真的发生时,系统会抛出一个异
25、常。这时,程序的正常流程被中断,系统会自动进入程序预先设定的异常处理代码块执行。这个代码块或者能尝试从错误中恢复,或者输出必要的信息后终止程序,防止异常错误的影响进一步扩大。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 33 页 - - - - - - - - - - 6 - 要使程序能完成异常处理,需要给出可能会产生异常的代码块,以及异常发生时处理这个异常的代码块。在Java 语言中,用try.catch语句指定可能会发生异常的代码块和错误处理代码块。 try.cat
26、ch语句由 try引导,由try标识一个可能会发生异常的语句块,用catch 标识一个处理某种异常的语句块,如果发生这异常,中断程序正常的执行流程,直接执行处理异常的语句块。最后,为了适应各种可能,另用finally标识一个无论try块中语句异常是否发生都会执行的语句块。下面是try.catch语句的一般形式:try 语句块 / 执行该语句块,可能会发生异常catch (异常类型e)异常发生时要执行的语句块finally无论异常发生与否,都要执行的语句块2.2.6 while 语句while 语句用于描述 while循环, while 循环结构由一个循环条件和一个作为循环体的语句组成, whi
27、le 循环的语义是当条件成立时重复执行指定的循环体。2.2.7 do.while语句do.while语句用于描述do.while循环。 do.while循环也由一个循环条件和一个循环体组成。do.while循环的语义是重复执行指定的循环体,直至条件不成立结束循环。注意,最后的分号是do.while循环结构的结束符,不能省略。2.2.8 for 语句循环之前要为变量置初值,在循环过程中循环变量逐一变化的循环计算结构,称为for循环。for 循环包含四部分,为循环有关变量赋初值的表达式1、控制循环条件的表达式2、实现循环计算的语句,称作循环体,以及循环体执行后为有关变量更新的表达式3,for 循环
28、控制结构用 for语句描述, for语句的一般形式为for (表达式1;表达式2;表达式3)2.2.9 嵌套的循环结构当循环结构的循环体中又包含循环结构时,循环结构就呈嵌套的形式。2.2.10 循环体中的continue语句和 break 语句循环体中的continue语句和 break 语句用于改变循环原有语句执行流程。其中continue语句的作用是结束当前一轮循环(跳过本轮循环的剩余语句),直接进入下一轮循环。continue语句出现在for循环中,跳至表达式3 的计算,更新循环变量。continue语句出现在while和 do-while循环中,跳至循环条件的计算和测试。break 语
29、句的作用是从循环体内跳出至循环的后继语句,即强行中断当前循环。2.2.11 package 语句在 Java 语言中,程序包相当于其他语言的函数库。除了系统提供大量程序包外,程序员也可将自己编写的类组成程序包,以便以后像使用系统程序包一样使用它们。程序包声明称为package 语句,格式如下:package 包名;package 语句必须出现在源程序文件的起始行,表示出现在该文件中的所有类都属于这个程序包。如果有多个源程序的程序包声明使用相同的包名,则表示这些源程序文件中的全部类都属于这个程序包。包名是一个目录名,其中也可以有路径。如果源程序文件的首行没有package语句,则被默认为是无名包
30、,存于当前目录中。2.2.12 import语句import语句用来引入所需要的类。import语句的格式为:import包名 . 类名;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 33 页 - - - - - - - - - - 7 - importJava.util.Date;/ 只是引入Date 类Java.awt包中引入 awt 目录层次的所有类。importJava.awt./ 从 Java.awt包中引入所有的类在一个 Java 源程序中可以有多个impo
31、rt语句,它们必须出现在package 语句之后,类的定义之前。JavaAPI 的类被组织成多个包,它们常被Java 程序引入使用:Java.applet 包含所有支持Javaapplet的类Java.awt 包含抽象窗口工具集中的图形、文本、窗口GUI类Javax.wing 是 Java.awt包的扩充,包含更丰富的抽象窗口工具集Java.awt.image 包含抽象窗口工具集中的图像处理类Java.lang 包含所有的基本语言类Java.io 包含所有的输入输出类J 包含所有实现网络功能的类Java.util 包含有用的实用库程序类Java.awt.peer 平台无关的GUI 工具集界面3
32、.1 面向对象的基本概念1. 抽象抽象( Abstraction)是程序设计中最经常使用的技术之一,因为抽象是有效控制程序复杂性的重要手段。程序设计中利用抽象,在面向过程阶段,系统按函数和模块进行设计。在面向对象阶段,利用抽象按类设计。类是目前支持抽象的最好工具。2. 对象在面向对象语言中,对象的名称用于程序引用对象,对象的成员变量,用于存储对象的状态信息,对象的方法用于描述对象的行为。3. 消息在程序系统中,对象之间的交互通过相互发送消息(Message)实现。4. 类统一给出同类对象的各项属性和能提供的所有行为,避免程序逐一描述同类中的每个对象的所有属性及详细给出对象的每个方法的描述,把同
33、一类对象的所有共同的属性和行为放在一起描述。这种声明对象共有属性和行为的机制称为类。类的声明定义了类的所有对象的共有属性和方法。类是对一组相同对象的描述,类概括了同类对象的共有性质:数据和方法。类的每个对象都有自己的标识,但它们具有相同的一组属性和提供相同的一组方法。5. 继承除对象按类划分外,不是同一类的对象可能会在某些相似性。继承(Inheritance)就是在已有类的基础上,扩充属性,或扩充与改写其某些方法,生成新的类,这个方式称为继承。继承定义的类称为子类,被继承的类称为超类(父类),子类自动含有父类具有的属性和方法。继承具有传递性。超类声明定义共同的特征,子类继承超类的共有特性,还可
34、增加某些特殊性,并可扩充和修正部分行为。采用继承声明定义的子类可以有父类的属性和方法,也可以增加新的属性和方法,并可以对父类的某些方法给出新年的定义。继承的最大好处是对象能按层次划分,并在子类中,与父类相同的属性和方法可以不再重复声明。继承体现了面向对象方法与现实世界中人们的抽象思维方式保持一致。6. 多态性多态性( Polymorphism )有多种表现形式,这里所说的多态性是指类型适应性多态性,这来自继承,不同继承层次的对象同样的方法有不同的实现。类型适应性多态要求能自动按对象的实际类型正确调用它的方法。类型适应性的多态性需要采用动态联编(DynamicBind实现。名师资料总结 - -
35、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 33 页 - - - - - - - - - - 8 - 联编是将发送给对象的消息与含执行该消息方法的对象连接起来。当联编在编译和连接阶段实现时,这样的联编过程称为静态联编;当联编推迟至运行时间实现时,该联编过程称为动态联编。动态联编是面向对象语言必须具有的一种能力,是实现上述多态性的技术基础。3.2 Java 的类和对象3.2.1 类类是一种类型,类封装对象的属性和方法,是同一类对象的模板。Java 程序的主要部分是描述类。1. 类的声明声明一
36、个新类的基本格式如下:class 类名 / 声明新类的基本格式类体其中关键字class引导一个类的声明,类名是一个标识符。类体给出类的成员变量定义和方法定义,类体中不能有独立的执行代码,所有的执行代码只能出现在方法中。2. 成员变量成员变量定义的一般形式为: 修饰字 类型变量名;其中,修饰字可以空缺,修饰字用于对成员变量限制其访问权限,成员的访问权限有4 种,private、protected、public和友好的,变量的类型可以是任何数据类型,变量的名字是一个标识符。 Java 中成员变量的名字可以与类的方法的名字相同。成员变量对类内定义的方法都有效。类的方法也可定义变量,这种变量称为局部变
37、量,局部变量只在定义它的方法中有效。3. 方法方法给出对象的行为,方法声明的一般形式如下:返回值类型方法名(类型参数名, .,类型参数名)方法体返回值类型声明方法返回值的数据类型。如果方法无返回值,就用void 关键字。方法可以没有参数,多个参数用逗号分隔,参数类型可以是任何数据类型。如果某方法中的参数名或局部变量名与类的成员变量名相同,则成员变量在这个方法内暂时被隐藏。如果成员变量在方法内被隐藏,又在方法中要引用成员变量,必须使用this , this表示调用该方法的当前对象。在 Java 程序中,类的方法可以重载。方法重载是指在一个类中定义多个有相同名字的方法,但这些方法或者参数个数不同或
38、者按顺序参数的类型不同。4. 构造方法构造方法是一种特殊的方法,这种方法的名与它的类名相同,并且不返回结果,也不写上void 关键字。构造方法的作用是创建类的对象,并给对象初始化。构造方法是公共方法,但程序不能显式调用构造方法。程序运行时,当有对象要创建时,由系统自动调用构造方法。如果类的声明没有定义构造方法,系统就增补一个没有参数的默认构造方法。3.2.2 对象类被声明后,就可用类创建对象,被创建的对象称为类的实例。程序使用对象需依次经历4 个步骤:声明对象、创建对象、使用对象和撤销对象。1. 声明对象由于类是一种引用类型,声明对象只是命名一个变量,这个变量能引用类的对象。由于对象还没有创建
39、,所以也暂不要为对象分配内存。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 33 页 - - - - - - - - - - 9 - 2. 创建对象创建对象就是为对象分配内存,为对象分配内存也称类的实例化。一般形式为:new构造方法( 参数表 )对象创建的两个步骤也可一起完成,一般格式为:类名对象名 =new构造方法( 参数表 )3. 对象的内存模型Java 语言将类型分成基本类型和引用类型两种。第 2 章介绍的整型、浮点型、字符型等是基本类型,程序引用这种类型的变量,
40、采用直接访问形式。在 Java 语言中,数组类型和类类型是引用类型。程序访问引用类型的变量采用间接访问方式。程序使用对象有多种情况:或为对象设置状态、或获取对象的状态、或改变对象的状态、或应用对象的某种方法。前三种需要访问对象的成员变量,最后一种要调用对象的方法。程序通过操作符“ .”对某对象的成员变量进行访问和方法调用。一般形式为:对象名 . 成员变量对象名 . 方法( 参数表 )3.2.3 实例变量和类变量类的成员变量又分为实例变量和类变量。在定义成员变时,用关键字static修饰的是类变量,定义时未用static修饰的是实例变量。类变量是类的所有对象共享的成员变量,一个类变量在类中只有一
41、个,它属于整个类,而不属于类的某个对象。引用类变量途径有两条,或通过类,或通过对象,格式如下:类名 . 类变量名或对象名 . 类变量名不同对象的实例变量将被分配不同的内存空间。改变类的某一个对象的实例变量值不会影响其他对象的实例变量。类变量的内存只有一处,让类的所有对象共享。从类的任一对象改变类变量,类的其他对象都能发现这个改变。3.2.4 实例方法和类方法如同类的成员变量有实例变量和类变量两种一样,类的方法也有两种:实例方法和类方法。在方法定义时,冠以修饰字static的方法称为类方法,没有冠以static修饰字的方法是实例方法。类中的实例方法可以互相调用,并可调用类方法。类方法也能相互调用
42、。但不能直接调用实例方法,除非类方法引入局部对象,然后通过局部对象调用实例方法。另外,类方法能直接引用类变量,不能引用实例变量。实例方法可引用实例变量,也可引用类变量。实例方法可以访问类变量和当前对象的实例变量。实例方法必须通过对象调用,不能通过类名调用。类方法只能访问类变量,不能够访问实例变量。类方法除了可以通过实例对象调用之外,还可以通过类名调用。3.2.5 访问权限访问权限实现访问控制。在类的成员中引入访问权限控制,保护类的成员不在非期望的情况下被引用。在类的声明中,除了类中方法总能访问类的成员变量外,Java 语言为其他类的方法访问本类成员变量和方法,提供以下4 种访问权限:publi
43、c :设置没有限制的访问权限,其他类的方法都能访问。private:设置最强的访问权限,其他类的方法都不能访问。protected:只限子类或者同一包中的类的方法能访问。:(无修饰,友好的)只允许同一包中的类的方法访问。1.public(共有)类的成员变量被设置成public访问权限,则类外的任何方法都能访问它。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 33 页 - - - - - - - - - - 10 - 2.private(私有)类的成员变量被设置成priv
44、ate访问权限,则类外的任何方法都不能访问它。3.protected(受保护)受保护访问权限是一种公有权限和私有权限之间的访问权限。若在类A的声明中,成员x 被定义成是受保护的,则类A的子类和与类A同一包中的别的类可以访问类A的受保护成员x;但对于不是类A的子类且与类A不在同一包中别的类来说,不可访问受保护成员x。4. 友好变量和友好方法没有修饰的成员变量和方法称为友好变量和友好方法。与保护访问权限比较,如果只允许同一包中的相关类的方法访问,不让类的子类和其他类的方法访问时,可设置成友好变量和友好方法。3.2.6 继承继承是面向对象语言的重要机制。借助继承,可以扩展原有的代码,应用到其他程序中
45、,而不必重新编写这些代码。在Java 语言中,继承是通过扩展原有的类,声明新类来实现的。扩展声明的新类称为子类,原有的类称为超类(父类)。继承机制规定,子类可以拥有超类的所有属性和方法,也可以扩展定义自己特有的属性,增加新方法和重新定义超类的方法。Java 语言不支持多重继承,限定一个类只能有一个超类。在子类声明中加入extends 子句来指定超类。类声明时,如果缺省extends 子句,未指定超类,则该类的超类是系统声明的类Java.lang.Object。子类对父类的继承性,Java 语言作以下规定:子类自然地继承其父类中不是private的成员变量作为自己的成员变量,并且自然地继承父类中
46、不是 private的方法作为自己的方法。超类方法在子类中隐藏称为重写,或置换。当子类中定义的成员变量和超类中的成员变量同名时,超类的成员变量同样会在子类中被隐藏。子类对成员变量的隐藏和方法的重写可以把超类的状态和行为改变为自身的状态和行为。对于子类对象,如果子类重写了超类的方法,则子类对象调用这个方法时,调用子类方法。如果子类继承了超类的方法(未重写),则会调用超类方法。1. 多态性面向对象语言规定,子类对象也是超类对象,凡超类对象可以应用的地方,子类对象也适用。编译时暂不绑定调用哪个方法,必须在运行时才绑定调用方法的技术称为动态联编。而代码根据执行时实际对象的类型不同,调用同名的不同方法,
47、是面向对象语言的一种多态性。解决这种多态性必须采用动态联编技术。重载能由调用时提供的参数个数和参数的类型顺序,在编译时就能确定被调用的方法,这种多态性不需要动态联编技术的支持。2. 多层继承继承声明的新类,又可被其他类再继承,从而构成多层继承。3. 多层继承中构造方法的调用顺序构造方法的调用顺序与类的继承顺序一致,从最高层次的超类开始,按继承顺序调用各类的构造方法。如果子类的构造方法要调用超类的构造方法,给从超类继承的成员变量初始化,用代码 super (参数)3.2.7 Java 面向对象的其他机制1.final类、 final方法和 final变量final的意义是最终的,用于修饰类、方法
48、和变量,其意思是“不能改变”。禁止改变可能是考虑到“设计”和“效率”两个方面。在类声明之前用final修饰,声明类是final类, final类是不能被再继承的类,即它不能再有子类。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 33 页 - - - - - - - - - - 11 - 用 final修饰方法,声明该方法不能被子类的方法覆盖。或是为了给方法“上锁”,防止任何子类改变它的本来含义;或是为了提高执行效率,编译器可以将这个方法的所有调用都能用“嵌入代码”实现
49、,即用方法体代码的副本来替换方法调用。用 final修饰变量,声明该变量的值不能被改变。不能被改变的变量相当于一个常量。final变量主要用于以下两个方面:或是一个编译期的常数,它永远不会改变;或在初始化后,不希望它现改变。final局部变量在定义时可以暂不设定初值,但是一经初始化,以后就不能再改变。常用 final声明常量,常量名习惯全部用大写字母命名。2.abstract类和 abstract方法abstract类称为抽象类。抽象类只声明一种模板,没有具体实现代码的类。只有它的子类才可能是有实际意义的类。所以,抽象类不可能有实例。abstract方法称为抽象方法。抽象方法只能出现在抽象类,
50、抽象方法没有实现的代码。如果一个类是抽象类的子类,则必须具体实现超类的抽象方法。抽象类可以没有抽象方法但有抽象方法的类一定是抽象类。3. 关键字 super 子类隐藏了超类的成员变量或者覆盖了超类方法后,利用关键字super ,子类方法可以引用超类的成员变量和被覆盖的方法。使用super 有 3 种情况:使用super 调用超类的构造方法,使用 super 调用超类被子类覆盖的方法;使用super 访问超类被子类隐藏的成员变量。4. 关键字 this 关键字 this用来指对象自己。this的作用有多种,例如,将对象自己作为参数,调用别的方法;当方法的局部变量隐藏成员变量时,利用this引用成