自考Java语言程序设计一串讲笔记.docx
- 文档编号:20157892
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:73
- 大小:56.02KB
自考Java语言程序设计一串讲笔记.docx
《自考Java语言程序设计一串讲笔记.docx》由会员分享,可在线阅读,更多相关《自考Java语言程序设计一串讲笔记.docx(73页珍藏版)》请在冰豆网上搜索。
自考Java语言程序设计一串讲笔记
自考Java语言程序设计
(一)串讲笔记
第1章 Java语言基础
1.1 Java语言的特点
Java语言最初的应用对象是消费性电子产品。
最初的名字是Oak语言。
Java语言是适用于分布式计算环境的面向对象编程语言,它虽类似于C和C++,但比C++简单,忽略了许多为提高计算效率但初学者较难掌握的程序语言特性。
Java语言主要有以下特点:
①强类型。
②编译和解释:
Java语言是一种高级编程语言,用Java语言编写的源程序在计算机上运行需要经过编译和解释执行两个严格区分的阶段。
Java的编译程序先将Java的源程序翻译成与机器无关的字节码,不是通常的编译程序将源程序翻译成特定计算机的机器代码。
运行时,Java的运行系统装载和链接需要执行的类,并作必要的优化后,解释执行字节码程序。
③自动无用内存回收功能,没有指针,数组元素都要检查下标是否越界。
④面向对象。
⑤与平台无关:
在任何平台上,Java源程序被Java
编译器译成虚拟机能够识别的字节码。
这样,只要有Java虚拟机的平台,就能解释执行Java字节码程序,从而实现Java程序与平台无关。
⑥安全性。
⑦分布式计算。
⑧多线程。
1.2 Java应用程序和小应用程序
Java程序可以是独立的应用程序,也可以是能在浏览器上执行的小应用程序(Applet)。
两种Java程序都由一个或多个扩展名为“.class”的文件组成,而且都需要Java虚拟机(JVM)载入并翻译。
两种程序的主要区别是:
①小应用程序只能在与Java兼容的容器中运行,可以嵌入在HTML网页内,在网络上发布,当网页被浏览时,在浏览器中运行,小应用程序的运行还受到严格的安全限制,例如:
它不能访问用户计算机上的文件。
Java应用程序没有这些限制,也不支持网页嵌入和下载运行。
②小应用程序和应用程序在代码编写上也有很大差异。
一个小应用程序必须定义成一个Applet类的子类。
应用程序可以是Applet类的子类,也可以不是。
应用程序必须在一个类中定义一个main()方法,该方法代表应用程序的入口。
而小应用程序不必定义main()方法,它的执行由Applet类中定义的多个方法控制。
Java源程序命名受到严格的限制:
Java源程序的扩展名必须是“.java”,而源程序经过编译后得到的应用程序文件名(即字节码文件)的主文件名和源程序中的类名一样,而扩展名是“.class”。
如果源文件中多个类,那么最多只能有一个public类;如果源文件中有public类,那么源文件的名字必须与这个类的名字完全相同。
如果源文件没有public类,那么源文件的名字只要和某一个类的名字相同即可。
Java程序中经常会出现注释。
注释是程序中的说
明文字,用于帮助阅读程序,它不是语句,不会影响程序的执行效率。
Java语言的注释有三种形式:
①行注释(//):
用于简短地说明前面代码的意义或功能。
注释内容到行末,不能跨行。
②块注释(/......../):
是多行注释,用于说明下面程序段的算法、功能等,块注释不可嵌套使用。
③文档注释(/........./):
能被实用程序(命令)javadoc接受,由它能自动生成程序的HTML文档。
1.3 Java程序的开发过程(以下以SUN公司的JavaJDK为例)对于Java应用程序,先编写Java源程序,源程序经Java编译器(javac.exe)编译后产生字节码文件,最后由Java解释器(java.exe)解释执行字节码文件。
对于小应用程序,先编写Java源程序,源程序经Java编译器编译后产生字节码文件,最后由Web浏览器(appletviewer.exe)解释执行字节码文件。
编译器和解释器的使用格式是:
javac[选项]源文件(其中源文件是“.java文件)
java[选项]类名[参数](类名指定的必须是含有
main()方法的类,即是一个Java应用程序)
通常情况下用的比较多的开发环境有Eclipse,
JBuilder等。
1.4 标识符和关键字
Java语言使用Unicode字符集,共有65535个字符。
Java标识符用于命名程序对象。
Java语言的标识符可以按以下规则任意命名:
①由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成。
②限定标识符的第一个字符不能是数字字符。
除了按上述规则命名标识符外,另外还有命名的习惯约定(行业习惯,不是规定):
一般变量名、方法名用小写英文字母开头,类名首字母用大写字母,若命名由若干个单词组成,后面的每个单词用大写开头;文字和常数全用大写字母命名;包名全部用小写字母。
Java关键字:
关键字是一些英文单词,在语言中,关键字已经被赋予特定的意义,不能用这些关键字作为标识符
命名程序对象。
关键字全部由小写字母组成。
每个关键字在程序中出现,均有特定位置和特定使用方法的要求。
1.5 基本数据类型
Java语言是强类型语言,每个变量和表达式都有确定的类型,在变量赋值时要进行类型兼容性检验。
数据类型可分为非基本数据类型和基本数据类型两大类。
非基本类型也称为复合数据类型,是由基本类型组合的新类型。
非基本数据类型分为:
数组、字符串、类、接口。
基本数据类型也称为原始数据类型,是系统预先规定的一些常用类型。
它们是:
整数类型、浮点数(实数)类型、字符(文字)类型、逻辑类型(布尔型)。
①逻辑类型用关键字boolean标识,所以也称为布尔型。
逻辑类型只有真(true)和假(false)两个值。
②字符类型用关键字char标识。
字符型数据是一个字符,内部表示是字符的Unicode代码,共有65535个不同的字符。
在Java程序中,字符常量有普通字符常量
(用单引号括住一个字符)和转义字符常量(用\开头后跟特定字符或字符串)两种。
③整数类型是指不带小数点和指数的数值数据。
由于计算机只能表示整数的一个子集,表达更大范围内的整数需要更多的二进制位,Java语言将整数数据按数值范围大小不同分成四种:
基本型用关键字int标识,4个字节,32位,取值范围是-231~231-1;短整型用关键字short标识,2个字节,16位,取值范围是-215~215-1;字节型用关键字byte标识,1个字节,8位,取值范围是-27~27-1;长整型用关键字long标识(或者在常数后加L或l标识),8个字节,64位,取值范围是-263~263-1。
每种整数类型处理不同范围的整数值,并且都是带符号的。
整型常量有十进制、八进制(以数字符0开头)和十六进制(以0x开头)三种写法。
④浮点数类型也称为实型,浮点数是带小数点或指数的数值数据。
Java语言的浮点数有单精度和双精度两种。
单精度型用关键字float标识,占4个字节,32位。
Float型常量的书写方法是在实数之后加上字母F或f。
双精度用关键字double标识,占8个字节,64位。
double型常量的书写方法有两种:
一种写法是直接写一个实数,或在实数后加字母D或d。
另一种是科学计数法,用10的方幂(用字符e或E表示幂底10)。
2.1 数据运算
Java语言的基本运算可分成以下几类:
赋值运算、算术运算、自增和自减运算、关系运算、逻辑运算、条件运算和字符串连接运算等。
2.1.1 赋值运算
在Java语言中符号“=”是赋值运算符不是“相等”运算符(相等运算符是“==”见关系运算符的叙述)赋值运算分为两类:
一是简单赋值运算;二是复合赋值运算。
1.简单赋值运算
简单赋值运算的一般形式如下:
变量 表达式赋值运算的执行过程是:
(1)计算赋值运算符右端的表达式。
(2)当赋值运算两侧的类型不一致时,将表达式值的类型自动转换成变量的类型。
(3)将表达式的值赋值给变量,即存储到与变量对应的存储单元中。
这里的类型转达换是指数值数据的类型自动转换,这样的自动转换只能是简单类型向复类型转换,不能从复杂的转换成简单的。
即如下所示的从左到右转换。
byte→short→int→long→float→double
Java语言约定赋值运算也有值,它的值就是赋予变
量的值,因此,赋值运算的结果可以继续赋值。
intj;
doubley=2.0;
y=j=3;∥j的值为3,y的值为3.0
赋值运算符结合性“自右至左”当连续有多个赋值
运算时,是从右至左逐个赋值。
2.复合赋值运算
这类运算的特殊性点是:
变量即要参与运算,又要接受赋值。
为避免对同一个变量的地址重复,计算引入复合赋值运算符。
常用的复合赋值运算符有:
+=、
-=、=、/=、%=。
2.1.2 算术运算
算术运算要求运算分量的类型是数值类型的(整数类型和浮点数类型)。
运算时,只需一个运算分量的是单目运算,需两个运算分量的是双目运算。
特别的:
(1)“/”为除法运算符,当除数和被除数均为整数类型数据时,则结果也是整数类型数据。
例如7/4的结果为1。
(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--后缀形式,表示在引用变量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
上述例子说明,对变量采用自增(或自减),用前缀形式或用后缀形式,对变量本身来说,效果是相同的,但表达式的值不相同。
前缀形式是变量运算之后的新值,后缀形式是变量运算之前的值.自增自减运算能使程序更为简洁和高效,但在使用时需注意“++”和“!
!
”运算的运算对象只能是变量,不能是常量或表达式.例如,4++或(i+j)++都是不
合法的.
2.1.4 关系运算
关系运算对左右两侧的值进行比较,如果比较运算的结果成立,则值为true,不成立为false。
关系运算符的优先级别不完全相同。
<、<=、>、>=的优先级高于==、!
=。
关系运算符的优先级低于算术运算符的优先级。
2.1.5 逻辑运算
逻辑运算用来描述表达式,实现连续多个条件的逻辑与、逻辑或、逻辑否定的判定。
有3个逻辑运算符:
""(逻辑与)、‖(逻辑或)、!
(逻辑否定)其中:
运算符""和‖是双目运算符,运算符!
是单目运算符。
逻辑运算的操作数必须是布尔型的,结果也是布尔型的。
逻辑否定“!
”的优先级高于算术运算符的优先级。
逻辑与“""”和逻辑或“‖”的优先级低于关系运算符的优先级。
需要特别指出的是,逻辑与和逻辑或运算符有以下
性质,Java语言利用这些性质,在进行连续的逻辑运算时,不分逻辑与和逻辑或的优先级进行计算,而是顺序进行逻辑与和逻辑或的计算,一旦逻辑子表达式或逻辑
表达式能确定结果,就不再继续计算。
(1)对表达式a""b,当a为false时,结果为false,不必再计算b;仅当a为true时,才需计算b。
(2)对表达式a‖b,当a为true时,结果为true,不必再计算b;仅当a为false时,才需计算b。
例如:
设有a=b=c=1,计算++a>=1||++b<
++c。
从左到右顺序计算逻辑或表达式,先计算子表达式++a>=1,变量a的值变为2,++a>=1为true,整个逻辑表达式的值已经为true,不再计算右边的子表达式++b<++c。
因而,变量b和变量c的值不变,仍为1。
2.1.6 条件运算(?
:
)
条件运算是一个三目运算符,一般形式为:
逻辑表达式?
表达式1:
表达式2
2.1.7 其他运算
1.位运算
位运算的运算分量只能是整型数据,位运算把运算对象看作是由二进制位组成的位串,逐位完成指定的运算,得到一个新的位串。
位运算符有4个,按优先级从高到低顺序,依次为:
~(位反)、&(位与)、^(位异或)、|(位或)用位运算的组合可以用来描述各种特殊的位串运算。
例如,位运算表达式
((k-1)^)&k能取下非0的整型变量k的最右边为1的那一位。
2.移位运算
移位运算是将整数作为二进制位的位串向左或向右移动。
移位运算符有三个,它们是:
左移运算符(<<)、算术右移运算符(>>)、逻辑右移运算符(>>>)移位运算有两个运算分量,左运算分量为移位的数据对象,右运算分量的值为移位位数。
移位运算符的优
先级低于算术算符,高于关系运算符,它们的结合方向是自左至右。
Java语言允许数值型数据混合运算,不同类型的数值数据混合运算时需要类型转换。
对于数据表示字节数少的类型数据转换成数据表示字节数较多的类型数据,系统能自动实现转换。
反之,例如,将一个long类数据转换成int型数型,这种数据类型转换必须采用类型
强制转换。
类型强制转换称作造型(cast),书写格式为:
(类型)表达式
2.2 语句
在Java语言中,语句分为基本语句、控制结构语句以及package语句和import语句等。
其中控制结构语句包括复合语句、if语句、switch语句、循环语句和
try...catch语句。
其中循环语句有while语句、do...while语句、for语句三种。
2.2.1 基本语句
基本语句主要有表达式语句、空语句、break语句、continue语句、return语句等。
1.表达式语句
在赋值表达式、自增自减表达式和方法调用表达式之后加上分号即变成语句,称它们是表达式语句。
另一个典型的表达式语句是方法调用表达式之后接上分号。
2.空语句
空语句是只有一个分号的语句,其形式为;
实际上,空语句是什么也不做的语句。
语言引入空语句是出于以下实用上的考虑。
例如,循环控制结构的句法需要一个语句作为循环体,当要循环执行的动作由循环控制部分完成时,就不需要有一个实际意义的循环体,这时就需要用一个空语句作为循环体。
另外,语言引入空语句使序列中连续出现多个分号不再是一种错误,编译系统遇到这种情况,就认为单独的分号是空语句。
3.break语句
break语句必须出现在多路按值选择结构或循环结构中。
break语句的执行强制结束它所在的控制结构,让程序从这个控制结构的后继语句继续执行。
4.continue语句
continue语句只能出现在循环结构中,continue语句的执行将忽略它所在的循环体中在它之后的语句。
简单地说,continue语句提早结束当前轮次循环,进入下
一轮次循环。
2.2.2 复合语句
在Java语言中,用花括号括住一个顺序执行的计算步骤序列描述顺序结构,这样的顺序结构称作复合语句。
复合语句中的每个计算步骤可以是单个语句,也可以是一个控制结构,特别情况也可以为空。
2.2.3 if语句
有两种选择控制结构:
两路条件选择结构(用计语句描述)和多路按值选择结构。
2.2.4 switch语句
在Java语言中,用switch语句描述多路按值选择结构。
switch语句包含一个表达式,用于按表达式值的不同作相应选择。
另外,还有一系列由case开头的子句和
一个可选用的default开头的子句,每个子句有一个可能为空的语句序列。
正确编写switch语句有以下几个要求:
(1)switch后面括号内的表达式的类型只限于
char、int、short和byte。
(2)所有case后的常量表达式的值互不相同,类型与switch后括号内的表达式类型一致。
(3)语句序列由任意条合法的Java语句构成,也可以没有语句。
(4)default子句可以缺省,但至多出现一次,习惯总是将它写在所有case子句之后,如有必要也可写在某个case子句之前。
(5)如果要使各种情况互相排斥,仅执行一个子句的语句序列,每个子句都需要以break语句结束。
2.2.5 try...catch语句Java语言提供了一种称为异常的机制协助程序报告和处理错误。
程序不必用特别的语句对异常预先进行检测,而是当异常真的发生时,系统会抛出一个异常。
这时,程序的正常流程被中断,系统会自动进入程序预先设定的异常处理代码块执行。
这个代码块或者能尝试从错误中恢复,或者输出必要的信息后终止程序,防
止异常错误的影响进一步扩大。
要使程序能完成异常处理,需要给出可能会产生异常的代码块,以及异常发生时处理这个异常的代码块。
在Java语言中,用try...catch语句指定可能会发生异常的代码块和错误处理代码块。
try...catch语句由try
引导,由try标识一个可能会发生异常的语句块,用catch标识一个处理某种异常的语句块,如果发生这异常,中断程序正常的执行流程,直接执行处理异常的语句块。
最后,为了适应各种可能,另用finally标识一个无论try块中语句异常是否发生都会执行的语句块。
下面是try...catch语句的一般形式:
try{
语句块//执行该语句块,可能会发生异常
}catch(异常类型e)
{
异常发生时要执行的语句块
}finally{
无论异常发生与否,都要执行的语句块
}
2.2.6 while语句
while语句用于描述while循环,while循环结构由一个循环条件和一个作为循环体的语句组成,while循环的语义是当条件成立时重复执行指定的循环体。
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循环控制结构用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语句的作用是从循环体内跳出至循环的后继语句,即强行中断当前循环。
2.2.11 package语句
在Java语言中,程序包相当于其他语言的函数库。
除了系统提供大量程序包外,程序员也可将自己编写的类组成程序包,以便以后像使用系统程序包一样使用它们。
程序包声明称为package语句,格式如下:
package包名;
package语句必须出现在源程序文件的起始行,表示出现在该文件中的所有类都属于这个程序包。
如果有多个源程序的程序包声明使用相同的包名,则表示这些源程序文件中的全部类都属于这个程序包。
包名是一个目录名,其中也可以有路径。
如果源程序文件的首行没有
package语句,则被默认为是无名包,存于当前目录中。
2.2.12 import语句
import语句用来引入所需要的类。
import语句的
格式为:
import包名.类名;
importjava.util.Date; //只是引入Date类
如果要从一个包中引入多个类,则可以用通配符“”。
例如,以下代码从java.awt包中引入awt目录层次的所有类。
importjava.awt.;//从java.awt包中引入所有的类在一个Java源程序中可以有多个import语句,它们必须出现在package语句之后,类的定义之前。
JavaAPI的类被组织成多个包,它们常被Java程序引入使用:
java.applet 包含所有支持Javaapplet的类
java.awt 包含抽象窗口工具集中的图形、文本、窗口GUI类
javax.wing 是java.awt包的扩充,包含更丰富的抽象窗口工具集
java.awt.image 包含抽象窗口工具集中的图像处理类
java.lang 包含所有的基本语言类
java.io 包含所有的输入输出类
java.net 包含所有实现网络功能的类
java.util 包含有用的实用库程序类
java.awt.peer 平台无关的GUI工具集界面
3.1 面向对象的基本概念
1.抽象
抽象(Abstraction)是程序设计中最经常使用的技术之一,因为抽象是有效控制程序复杂性的重要手段。
程序设计中利用抽象,在面向过程阶段,系统按函数和模块进行设计。
在面向对象阶段,利用抽象按类设计。
类是目前支持抽象的最好工具。
2.对象
在面向对象语言中,对象的名称用于程序引用对象,对象的成员变量,用于存储对象的状态信息,对象的方法用于描述对象的行为。
3.消息
在程序系统中,对象之间的交互通过相互发送消息
(Message)实现。
4.类
统一给出同类对象的各项属性和能提供的所有行为,避免程序逐一描述同类中的每个对象的所有属性及详细给出对象的每个方法的描述,把同一类对象的所有共同的属性和行为放在一起描述。
这种声明对象共有属性和行为的机制称为类。
类的声明定义了类的所有对象的共有属性和方法。
类是对一组相同对象的描述,类概括了同类对象的共有性质:
数据和方法。
类的每个
对象都有自己的标识,但它们具有相同的一组属性和提供相同的一组方法。
5.继承
除对象按类划分外,不是同一类的对象可能会在某些相似性。
继承(Inheritance)就是在已有类的基础上,扩充属性,或扩充与改写其某些方法,生成新的类,这个
方式称为继承。
继承定义的类称为子类,被继承的类称为超类(父类),子类自动含有父类具有的属性和方法。
继承具有传递性。
超类声明定义共同的特征,子类继承超类的共有特性,还可增加某些特殊性,并可扩充和修正部分行为。
采用继承声明定义的子类可以有父类的属性和方法,也可以增加新的属性和方法,并可以对父类的某些方法给出新年的定义。
继承的最大好处是对象能按层次划分,并在子类中,与父类相同的属性和方法可以不再重复声明。
继承体现了面向对象方法与现实世界中人们的抽象思维方式保持一致。
6.多态性
多态性(Polymorphism)有多种表现形式,这里所说的多态性是指类型适应性多态性,这来自继承,不同继承层次的对象同样的方法有不同的实现。
类型适应性多态要求能自动按对象的实际类型正确调用它的方法。
类型适应性的多态性需要采用动态联编(DynamicBinding)技术实现。
联编是将发送给对象的消息与含执行该消息方法的对象连接起来。
当联编在编译和连接阶段实现时,这样的联编过程称为静态联编;当联编推迟至运行时间实现时,该联编过程称为动态联编。
动态联编是面向对象语言必须具有的一种能力,是实现上述多态性的技术基础。
3.2 Java的类和对象
3.2.1 类
类是一种类型,类封装对象的属性和方法,是同一类对象的模板。
Java程序的主要部
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自考 Java 语言程序设计 一串 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)