Java程序设计教程与实验(Java概述、应用基础、类和对象)课件_第1页
Java程序设计教程与实验(Java概述、应用基础、类和对象)课件_第2页
Java程序设计教程与实验(Java概述、应用基础、类和对象)课件_第3页
Java程序设计教程与实验(Java概述、应用基础、类和对象)课件_第4页
Java程序设计教程与实验(Java概述、应用基础、类和对象)课件_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 Java概述第1页,共120页。本章主要内容1.1 Java的诞生与发展了解JDK的三个版本1.2 Java语言特点掌握Java是什么了解Java跨平台原理及其特点1.3 Java与C/C+的区别1.4 Java的工作原理与运行系统1.5 Java开发环境与JDK的安装掌握JDK的安装、环境变量的设置,常用命令的使用1.6 简单的Java程序掌握 application 与Applet 程序结构及各自编译、运行的过程作业2*第2页,共120页。1.1.1 Java的诞生前身:OAK(James Gosling 1990)Java大事记90年,Sun公司开始Green工程93年,WWW席

2、卷全球94年,开始定位于Internet95.1,Java命名Hotjava, 第一个支持Java的浏览器Netscape2.0Java的诞生与发展3*第3页,共120页。1.1.2 Java的发展发展:面向网络应用,类库不断丰富,性能不断提高,应用领域不断拓展。 1995.5.23 Java诞生(Java1.0.2 API)1997.2.18 JDK1.1VJ+6.0、cafe、JBuilder . 支持1998.12 JDK1.2 (Java 2 SDK v1.2 Standard Edition)网址(查询新动向)Java的诞生与发展4*第4页,共120页。Java的发展Java版本与J

3、ava开发环境的关系Java1.2开始,JDK更名为SDKJDK1.2开发Java1.2,JDK1.3开发Java1.3,JDK1.4开发Java1.4Java1.x统称为Java 2程序JDK1.5Java的诞生与发展5*第5页,共120页。Java2.0开始,JDK分为三个版本J2EE(企业级版本)J2SE(标准版本)J2ME(微型版本)1.1.3 Java的现状与应用J2MEJava的诞生与发展6*第6页,共120页。1.2.1 Java是什么A simple,object-oriented, distributed, interpreted, robust, secure, archi

4、tecture-neutral, portable, high-performance, multi-threaded, dynamic language.一种OOP语言一个平台(JVM和Java API)7*第7页,共120页。1.2.2 Java的特点Java= “C+” “复杂性和奇异性” + “安全性和可移植性”8*第8页,共120页。Java的特点面向对象完全基于类、对象:OOA,OOD,OOP以类的形式组织代码,数据类型封装、继承、多态9*第9页,共120页。Java的特点简单:Java最初是为家用电器进行集成控制而设计的一种语言,因此它必须简单明了。其简单性主要体现在三个方面。C

5、+like摒弃了C+中容易引发程序错误的一些特性,如指针、结构、枚举等,并能进行自动内存管理。提供了丰富的类库10*第10页,共120页。Java的特点分布式健壮性(鲁棒性)检查数据类型的匹配,数组下标越界不支持指针,保护内存数据、程序自动内存管理,碎片收集(垃圾回收机制)例外控制机制,正确处理运行时错误安全性删除指针和释放内存等C+功能Java的安全体系架构11*第11页,共120页。Java的特点解释执行结构中立:字节码与计算机结构无关可移植语言规范避免了与具体实现有关的描述多线程:支持多任务高效:JIT(Just-In-Time)及时编译器动态:可动态增加和修改类库内容12*第12页,共

6、120页。1.3 Java与C/C+的区别1全局变量2条件转移指令3指针4内存管理5数据类型的一致性6类型转换7头文件8编译预处理13*第13页,共120页。9结构体和共用体10常量11多重继承12异常处理13.面向对象程序设计14*第14页,共120页。1.4.1 Java的工作原理Java平台的两个组件Java VM是Java平台的基础Java API是预先建立的软件组件的集合,提供丰富的功能,如GUI部件。 Java API被分为相关类和接口的库,这些库称为包(package)15*第15页,共120页。Java API和Java VM将程序与硬件分离从而实现跨平台功能Java16*第1

7、6页,共120页。Java虚拟机Java虚拟机(JVM)Java处理器“芯片”,一般由软件实现Java虚拟机类装入器字节码验证器解释器字节码执行17*第17页,共120页。问:JVM是不是跨平台的?不是,不同的平台分别设计不同的JVM。Java字节码没有保存特定平台的信息。18*第18页,共120页。Java的工作方式文件类型.javaJava源文件.class二进制字节码文件运行机制对于大多数语言,要运行程序,要么编译程序要么解释程序;而Java语言的程序则既要被编译又要被解释。19*第19页,共120页。Java的工作方式 编译程序将Java源程序翻译为字节码(bytecode)程序;解释

8、程序Java虚拟机分析并运行字节码程序。一次编写,处处运行Write once,run anywhere!20*第20页,共120页。用Java源程序先被编译、后被解释21*第21页,共120页。1.4.2 Java的运行系统Java的运行系统是各平台厂商对JVM的具体实现。对于Java中的两类程序:Java Application(Java应用程序)和Java Applet(Java小应用程序),存在两种不同类型的运行系统;对于Java Application,运行系统是Java解释器;而对于Java Applet,运行系统是指Java兼容的Web浏览器,该浏览器中包含了支持Applet运行

9、的环境。 22*第22页,共120页。1.5.1 JAVA开发工具JDK系列(Sun)命令行Java WorkShop(Sun)Symantee CAFJCreatorJBuilder(Borland)Visual J+(MicroSoft)Java Studio (Sun)Visual Age for Java(IBM)OPTIONAL23*第23页,共120页。1.5.2 JDK下载与安装为了鼓励使用Java语言开发软件,Sun Microsystems公司提供了免费的软件开发工具包(SDK),其中包括编译器、虚拟机、调试器等开发工具,称为Java开发工具包或JDK。JDK (可从下载)j

10、dk-1_5_0_08-windows-i586-pjdk-1_5_2-doc.zip24*第24页,共120页。Java 2 SDK25*第25页,共120页。安装JDK后产生如下目录结构: bin目录:Java开发工具,包括Java编译器、解释器等 demo目录:一些实例程序 lib目录:Java开发类库 jre目录: Java运行环境,包括Java虚拟机、运行类库等 26*第26页,共120页。JDK实用程序javacJava编译器,将Java源程序编译成字节码javaJava解释器,直接从类文件执行Java应用程序,即applicationappletviewer小程序浏览器,执行ht

11、ml文件上的Java小程序,即Applet27*第27页,共120页。设置环境变量: PATH=e:jdk1.5.0_08bin; CLASSPATH=. ;28*第28页,共120页。1.6 简单的Java程序Java程序分两种: Java应用程序(Java Application) 1.普通桌面应用 2.服务器端应用 Java小程序(Java Applet)(由浏览器解释执行)Java程序29*第29页,共120页。1.6.1 Java 应用程序【例1.1】从键盘上输入圆的半径,求圆的周长和面积。/* *从键盘上输入圆的半径,求圆的周长和面积。 */public class Perimet

12、erAreaOfCircle final static double PI=3.1415926; / 定义常量PI public static void main(Stringargs) double r,perimeter,area; r=Double.parseDouble(args0); Java程序30*第30页,共120页。/*从命令行读入的字符串args0转换为实型dobule,Double是系统提供的一个类,parseDouble()是其中的一个方法,用于实现字符串转换为double。*/perimeter=2*PI*r; area=PI*r*r; System.out.prin

13、tln(圆的周长为:+perimeter); / 实现字符串的输出 System.out.println(圆的面积为:+area); 31*第31页,共120页。1.6.2 Java小应用程序【例1.2】设计一个显示“Hello World!”字符串的Java Applet小应用程序,并用浏览器浏览网页,(1) 编辑 import java.awt.Graphics; import java.applet.Applet; public class HelloWorldApplet extends Applet public String s; public void init() s=new

14、String(Hello World!); public void paint(Graphics g) g.drawString(s,25,25); / 在浏览器中坐标为(25,25)的位置显示字符串s Java程序32*第32页,共120页。(2) 编译小应用程序使用javac.exe编译Java Applet源程序代码,生成名为HelloWorldApplet.class的字节码文件。如果给出错误信息,则需要重复编辑和编译过程,直到程序没有错误、编译成功为止。(3) 编辑HTML网页文件 Java Applet Example Java小应用程序33*第33页,共120页。简单编写HTML

15、文件: HelloApplet.html Java程序也可最简化建立HelloApplet.html文件,嵌入HelloApplet.class34*第34页,共120页。 Java小应用程序不能直接执行和使用,必须要在浏览器中执行。运行applet程序: 1. appletviewer index.html Applet程序的运行Java程序35*第35页,共120页。2. 在浏览器中运行 直接在浏览器中打开index.html程序,在主流的浏览器如IE、Netscape中都包含有java虚拟机,负责解释执行java applet程序。 36*第36页,共120页。作业熟悉JDK开发环境下载

16、课上的例子,观察结构并执行编写一个Application,在屏幕上显示如下的信息:* Welcome *把上题改写为Applet。37*第37页,共120页。第2章Java应用基础第38页,共120页。主要内容2.1 标识符、关键字标识符关键字2.2 基本数据类型2.3 常量、变量常量变量2.4 运算符与表达式2.5 流程控制语句2.6 Java开发类库组成掌握java.lang包39*第39页,共120页。2.1 标识符、关键字Java语言使用国际字符集(Unicode)。Unicode字符集定义了一套国际标准字符集。通常的ASCII码是8位的,而Unicode字符集中的每个字符占16位,即

17、2个字节,整个字符集共包括65336个字符,兼容ASCII,排在Unicode字符集最前面的256个字符就是ASCII码。Unicode除了可以表示256个ASCII码外,还可以表示汉字、拉丁语、希腊字母、朝鲜语等。40*第40页,共120页。2.1.1 标识符标识符是赋予变量、类、方法、数组、文件等的名称。Java语言规定标识符是以字母、下划线“_”或美元符号“$”开始,随后可跟数字、字母、下划线或美元符号的字符序列。Java标识符大小写敏感,没有长度限制,可以为标识符取任意长度的名字,但关键字不能作为标识符。 41*第41页,共120页。关于标识符为增强程序可读性,Java作如下的约定:类

18、、接口:通常使用名词,且每个单词的首字母要大写方法:通常使用动词,首字母小写,其后用大写字母分隔每个单词常量:全部大写,单词之间用下划线分隔变量:通常使用名词,首字母小写,其后大写字母分隔每个单词,避免使用$符号。例:下面是合法的标识符:identifierthisoneUserNameUser_name_system_varl$max下面是不合法的标识符:8_value(不能以数字打头)$book*c(不能包含非法字符*)42*第42页,共120页。2.1.2 关键字关键字是指对编译器有特殊意义,在程序中不能用作其它目的的字符序列,关键字都是由小写字母组成的 。Java中的关键字:abstr

19、actbooleanbreakbytecasecatchcharclasscontinuedefaultdodoubleelseextendsfinalfinallyfloatforifimplementsimportinstanceofintinterfacelongnativenewnullpackageprivateprotectedpublicreturnshortstaticsuperswitchsynchronizedthisthrowthrowstransienttryvoidvolatilewhile 43*第43页,共120页。关于关键字true和false不是关键字,类似地

20、,对象值null也没有列入关键字。但是不能把它们派作其它用途。还有些关键字,如cast、future、goto、generic、inner、operator、outer、rest、var等都是Java保留的没有意义的关键字。 44*第44页,共120页。2.2 基本数据类型数据类型规定一类数据的数据位长度,取值范围,以及对该类数据所能进行的操作。Java数据类型分为基本数据类型和引用数据类型(引用类型又称为组合类型) 。Java语言定义了8种基本数据类型,其分类及关键字如下:整型:byte、short、int、long浮点型:float、double字符型:char布尔型:boolean45*

21、第45页,共120页。表2.1 Java中的基本数据类型46*第46页,共120页。2.3 常量、变量Java语言中存在着两种表征数据的形式:常量与变量。常量:程序运行过程中保持不变,并且不可进行修改的量。变量:用来存放数据且其值可以改变的量称为变量。 47*第47页,共120页。2.3.1 常量Java语言中常量有两种类型:一种称为直接常量也称为值常量,如12、-33、15.6;有多种类型:、另一种称为符号常量,符号常量需要明确定义。Java语言中使用关键字final来定义符号常量,如下所示:final double PI=3.1415926; 其中PI即符号常量。 double是该符号常量

22、的类型。注意:符号常量实质上是一种特殊的变量,也是占用内存空间的,不同于C语言编译预处理定义的宏。 48*第48页,共120页。1整型常量(byte、short、int、long)整型常量可以用来给整型变量赋值,可以用十进制、八进制和十六进制来表示。(1) 十进制整型常量由0至9的数字组成,没有前缀,不能以0开始,没有小数部分。例如:124,-36等。(2) 八进制整型常量,以0为前缀,其后由0到7的数字组成,没有小数部分。例如:0332,-0122等。(3) 十六进制整型常量,以0 x或0X为前缀,其后由0到9的数字和A到F(大小写均可)字母组成,没有小数部分。例如:0 x3A,0X43f等

23、。 49*第49页,共120页。2浮点型常量(float、double)浮点型常量有两种表示方式:(1) 十进制小数表示法,它是由整数部分和小数部分组成的。如:4.0 ,33.32等。小数点两边的数字不能同时省略且小数点不能省略。(2) 科学计数法表示,它常用来表示很大或很小的数,如1.21026在Java中表示为1.2E26。表示方法是在小数表示法后加e(或E)及指数部分。但要注意,e(或E)前面必须有数字,指数部分可正可负,但都是整数(正号可省略)。例如,4.2E-5,3e6等。 50*第50页,共120页。3.布尔型常量boolean布尔型常量值只有true和false,true和fal

24、se必须要小写。true表示“逻辑真”,false表示“逻辑假”。注意,和C/C+语言不同,在Java语言中不能认为“非0值或1”是true,“0值”是false。 51*第51页,共120页。4字符型常量Java中的字符采用Unicode字符集的编码方案,是16位的无符号整数,占2个字节,表示的字符从065535。 Unicode字符集可以支持各类文字的字符。 字符型常量分为一般字符常量和转义字符常量。对于可输入字符,用单引号将字符括起来,如a, A, 我等。对于不可输入字符,采用转义字符表示。52*第52页,共120页。表2.2 转义字符53*第53页,共120页。5字符串常量字符串并不是

25、Java的基本数据类型,它是Java提供的位于java.lang包中的String类,字符串常量就是字符串类java.lang.String类的一个对象,故它可以使用类String中的方法,所有字符串常量值都用双引号括起来。需要注意的是null可以简单视为一个引用类型的常量值,表示不引用任何对象。在Java编码规范中,规定null是所谓null类型的唯一值,且规定null可转换到任何引用类型。 54*第54页,共120页。2.3.2 变量每个变量都要有个名字,变量名必须是合法的标识符,并且最好具有一定的意义,有意义的变量名可以提高程序的可读性。比如,要定义一个表示学生数量的变量,用studen

26、t_num做变量名要比用k更合适。 所有变量在使用之前必须被定义,格式如下:数据类型关键字 变量名=初始值;55*第55页,共120页。例:/ x为基本整型int x; / y为浮点数(单精度),并且赋给初始值3.14 float y=3.14; / 可以在一个语句中声明多个同一类型的变量long area,width,length; 56*第56页,共120页。2.4 运算符与表达式对各种类型的数据进行加工的过程称为运算,表示各种不同运算的符号称为运算符,参与运算的数据称为操作数。运算符的优先级与结合性如表所示。 一个Java表达式是由操作数和运算符按一定的语法规则组成的符号序列。 57*第

27、57页,共120页。58*第58页,共120页。2.4.1 赋值运算符和赋值表达式1赋值运算符Java中,“=”被称为赋值运算符,它的作用是设置变量的值,即将一个数据赋给一个变量,实际上是将特定的值写到变量所对应的内存单元中。赋值运算符是双目运算符,因为“=”两边都要有操作数。“=”左边是待赋值的变量,右边是要赋的值。除了“=”基本赋值运算符外,另外还有几个复合赋值运算符:+=、-=、* =、/=和%=;五个由位运算符和赋值运算符组成的复合赋值运算符:=、&=、|=、和=。59*第59页,共120页。2赋值表达式我们可以用常量对变量赋值,也可以用变量对变量赋值,还可以用任何表达式对变量赋值。用

28、赋值运算符连接起来的式子称为赋值表达式。赋值表达式的值就是被赋值的变量的值。赋值表达式加上分号就构成了赋值语句,是极为常用的Java语句。示例:参看例2.360*第60页,共120页。2.4.2 算术运算符和算术表达式1算术运算符Java提供的算术运算符包括:加(+)、减(-)、乘(*)、除(/)和取余(%)。算术运算符是双目运算符。利用算术运算符连接起来的式子称为算术表达式。2自增、自减运算符+、-Java中还另外提供了两个用于算术运算的单目运算符:自增运算符+和自减运算符-。其功能是使变量的值增1或减1。使用这两个运算符,可以让程序更为简化、更容易阅读。+和-运算符有一个特点,就是它们既可

29、以位于变量名的左边(称为前自增、前自减),又可以位于变量名的右边(后自增、后自减),但结果却是不一样的。+和运算有以下四种情况: 61*第61页,共120页。(1) i+:使用i之后,i的值加1,即先取值,后自加。等价于i=i+1。(2) +i:先使i加1,然后再使用i,即先自加,后取值。等价于i=i+1。(3) i-:使用i之后,i的值减1,即先取值,后自减。等价于i=i-1。 (4) -i:先使i减1,然后再使用i,即先自减,后取值。等价于i=i-1。注意:+和-运算符只能用于变量,不能用于常量和表达式。因为+和-蕴含着赋值操作。+和-运算符经常用于循环程序设计中。 62*第62页,共12

30、0页。2.4.3 关系运算符和关系表达式1关系运算符关系运算符又称比较运算符,因为关系运算实际上是比较大小的运算。Java提供了6种关系运算符:、=、5的值是“真”,而x6?3:9 / 整个表达式的值为966*第66页,共120页。2.4.6 位运算符和位表达式位运算符的作用在于对整数数值的二进制表示进行运算,像二进制的AND与OR等运算。 (1) 按位求反运算符对操作数的二进制数据的每一个二进制位都取反,即1变成0,而0变成1。如8的结果为-9。(2) 位与运算符&参与运算的两个操作数,相应的二进制数位进行位与运算。如5&11结果为1。(3) 位或运算符|参与运算的两个操作数,相应的二进制数

31、位进行位或运算。如5|11结果为15。(4) 位异或运算符 参与运算的两个操作数,相应的二进制数位进行位异或运算。如511结果为14。67*第67页,共120页。(5) 保留符号位的右移运算符将一个操作数的各个二进制位全部向右移若干位,这个位数由右操作数来决定,移到右端的低位被舍弃,左边空出的位全部用最高位的符号位来填充。如51结果为2。91,结果为5。(6) 不保留符号位的右移运算符与不同的是,右移后左边空出的位用0填充。如51结果为2。91,结果为2147483643。(7) 左移运算符将一个操作数的所有二进制位向左移若干位,右边空出的位填0。若高位左移后溢出,则舍弃溢出的数。如51结果为

32、10。 68*第68页,共120页。2.5 流程控制语句程序控制可以定义为对程序语句的执行顺序进行的规定。 有三种结构:顺序结构分支结构循环结构为了实现程序执行点的流程控制,Java提供了如下的分支、循环语句:分支控制语句包括:if-else、switch-case。循环控制语句包括:while、do-while和for。跳转语句:break、return和continue。69*第69页,共120页。除了上面的流程控制语句,还有两类特殊的语句:(1) 异常处理语句:如try-catch-finally、throw等。参见第6章。(2) 注释语句。Java与C/C+之间的差别很细微,可归纳为两

33、点:(1) 在C语言中,条件表达式可以是数值型,而在Java条件语句中,条件表达式必须是布尔型,不能是数值。(2) Java取消了对goto语句的支持。goto语句的使用一直是程序设计者争论的话题,这是因为goto语句的使用不仅降低了程序的可读性,而且往往会带来一些不可预测的错误。 70*第70页,共120页。2.5.1 顺序结构顺序结构是最简单、最基本的结构,在顺序结构内,顺序执行各个语句。图2.1表示了一个顺序结构形式,从图中可以看出它有一个入口a点,一个出口 b点,在结构内A框和B框都是顺序执行的处理框。 71*第71页,共120页。空语句、表达式语句、复合语句是Java程序依次顺序执行

34、的语句,故又称为顺序结构。空语句是仅由分号构成的语句,表示什么动作都不做。一个表达式加上一个分号就是一个表达式语句,只有少量的几种表达式才能构成表达式语句。它们是:由赋值运算符构成的表达式、由+或-构成的表达式、方法调用、new 表达式。标号语句的格式为:标识符: 其中:可为任何合法的Java语句。 复合语句是指由一对花括号括起来的任意数量的语句,有时又称为块语句或组语句。示例:参看例2.472*第72页,共120页。2.5.2 选择结构1.if语句 (1) 简单if语句if (布尔表达式) 语句(组);其执行过程是:首先计算布尔表达式的值,若为真true,则执行块内语句,否则,if语句终止执

35、行,即不执行块内语句而执行if语句后面的其它语句,如图2.2(a)所示。示例:参看例2.573*第73页,共120页。(2) if-else语句if (布尔表达式) 语句(组)A;else 语句(组)B;其执行过程是: 首先计算布尔表达式的值,若为真,则执行语句(组)A,否则执行语句(组)B, 如图2.2(b)所示。示例:参看例2.674*第74页,共120页。(3) if语句的嵌套if语句中的任何一个子句可以是任意可执行语句,当然也可以是一条if语句,这种情况称为if语句的嵌套。当出现if语句嵌套时,不管书写格式如何,else都将与它前面最靠近的未曾配对的if语句相配对,构成一条完整的if语

36、句。嵌套的深度没有限制,if语句的嵌套可以实现多重选择。示例:参看例2.775*第75页,共120页。2switch语句switch语句是多分支选择语句,又称开关语句。 switch语句的一般形式如下:switch(表达式) case 常量表达式1: 语句组1; break; case 常量表达式2: 语句组2; break; case 常量表达式n: 语句组n; break; default: 语句组n+1;76*第76页,共120页。2.5.3 循环结构循环结构是指在一定条件下反复执行一个程序块的结构。循环结构也是只有一个入口,一个出口。根据循环条件的不同,循环结构分为当型循环结构和直到型

37、循环结构两种。77*第77页,共120页。当型循环的结构如图2.5,其功能是:当给定的条件p成立时,执行A框操作,执行完A操作后,再判断p条件是否成立,如果成立,再次执行A操作,如此重复执行A操作,直到判断p条件不成立才停止循环。此时不执行A操作,而从出口b跳出循环结构。78*第78页,共120页。直到型循环的结构如图2.6,其功能是,先执行A框操作,然后判断给定条件p是否成立,如果成立,再次执行A操作;然后再对p进行判断,如此反复,直到给定的p条件不成立为止。此时不再执行A框,从出口b跳出循环。 79*第79页,共120页。Java语言中,实现循环结构的控制语句有while、dowhile、

38、for语句。1. while循环while语句用来实现“当型”循环结构,即先判断表达式,后执行语句。其一般形式如下:while (循环条件)语句; / 循环体示例:参看例2.1080*第80页,共120页。2. do-while 循环do-while语句用来实现“直到型”循环结构,即先执行循环体,然后判断循环条件是否成立。其一般形式如下:do 语句; / 循环体 while (循环条件);示例:参看例2.1181*第81页,共120页。3. for循环for语句是java语言中使用灵活方便的一种循环语句,它不仅用于循环次数已知的情况,还能用于循环次数预先不能确定只给出循环结束条件的情况。 fo

39、r语句的一般形式为: for(表达式1;表达式2;表达式3) 语句; / 循环体示例:参看例2.1282*第82页,共120页。4break、continue、标号、return语句、System.exit()方法 Java中可以用break和continue两个循环跳转语句进一步控制循环。这两个语句的一般格式如下:break label; / 从所在的switch语句、循环语句中跳出。continuelabel; / 跳过循环体的剩余语句,开始执行下一次循环。break和continue可以用在三种循环语句中的任意一种。这两个语句都可以带标号使用,也可以不带标号使用。标号是出现在一个语句之前

40、的标识符,标号后面要加一个冒号,定义如下:label: statement;示例:参看例2.13与2.1483*第83页,共120页。return语句和System.exit()方法return语句用来从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续执行。如果在main()方法中执行return语句,则使程序执行返回到Java运行系统,因为Java运行系统调用了main()方法。要想从程序的任意地方直接一步到位地退出程序,而不是返回到调用该方法的语句处,可以使用System.exit()方法。 84*第84页,共120页。5. 循环的嵌套一个循环体内包含另一个完整的循

41、环结构称为循环的嵌套,内嵌的循环中还可以嵌套循环,这就是多重循环。示例:参看例2.15与2.16(a)(b)(c)85*第85页,共120页。2.6 Java开发类库组成Java提供了丰富的标准类来帮助程序设计者更方便快捷地编写程序,这些标准类组成了类包,主要有:java.lang java.awtjava.applet java.awt.imagejava.awt.peer java.io java.util除了java.lang之外,其余类包都不是java语言所必须的。 86*第86页,共120页。1. java.lang本类包中包含了各种定义Java语言时必须的类,这些类能够以其它类不能

42、使用的方式访问java的内部。任何java程序都将自动引入这个包。其中的类包括:Object类:java中最原始、最重要的类,每个java类都是它的子类,它实现了每个类都必须具有的基本方法。基本类型包装器:Boolean, Character, Number, Double, Float, Integer, Long。String类:字符串类。Math类:数学函数的集合。执行线程:类Thread, ThreadGroup, 接口Runable。System类和Runtime类:可以通过类Runtime和System访问外部系统环境。System类的两个常用功能就是访问标准输入/输出流和错误流、

43、退出程序。异常和错误:类Exception, Error, 接口Throwable。其它类:接口Cloneable、运行时的类等。 87*第87页,共120页。2. java.appletJava Applet是Java编程的一个主要魅力,java.applet类包提供了Applet的运行机制以及一些编写Applet非常有用的方法。3. java.awt本类包是各种窗口环境的统一界面(AWT代表Abstract Windows Toolkit,即抽象窗口工具包),其中的类使得创建诸如窗口、菜单、滚动条、文本区、按钮以及复选框等图形用户界面(GUI)的元素变得非常容易。4. java.awt.i

44、mage本类包能够以独立于设备的方式加载并过滤位图图像。5. java.awt.peerjava.awt.peer是全部awt组件的对等对象接口的集合,每个接口都提供了机器相关的基本方法,awt使用这些方法来实现GUI,而不必关心是何种机器或操作系统。 88*第88页,共120页。6.java.ioJava的输入/输出模式是完全建立在流的基础之上的。流是一种字节从一个地方到另一个地方的单向流动,可以把流附加于文件、管道和通信链路等。java.io类包中定义的许多种流类通过继承的方式进行组织,其中也包括一些用来访问本地文件系统上的文件流类。7. 类包用来完成与网络相关的功能:URL、WWW连接以

45、及更为通用的Socket网络通信。8. java.utiljava.util类包包含了一些实用类和有用的数据结构,如字典(Dictionary)、散列表(Hashtable)、堆栈(Stack)、向量(Vector)以及枚举类(Enumeration)等,使用它们开发者可以更方便快捷地编程。 89*第89页,共120页。9. java.rmi包、java.rmi.registry包和java.rmi.server包这三个包用来实现RMl(remote method invocation,远程方法调用)功能。利用RMI功能,用户程序可以在远程计算机(服务器)上创建对象,并在本地计算机(客户机)上

46、使用这个对象。10. java.sql包java.sql包是实现JDBC(Java database connection)的类库。利用这个包可以使Java程序具有访问不同种类的数据库(如Oracle,Sybase,DB2,SQLServer等)的功能,只要安装了合适的驱动程序,同一个Java程序不需修改就可以存取、修改这些不同的数据库中的数据。JDBC的这种功能,再加上Java程序本身具有的平台无关性,大大拓宽了Java程序的应用范围,尤其是商业应用的适用领域。90*第90页,共120页。11. java.security包、java.security.acl包和erfaces包这三个包提供

47、了更完善的Java程序安全性控制和管理,利用它们可以对Java程序加密,也可以把特定的Java Applet标记为“可信赖的”,使它能够具有与Java Application相近的安全权限;12.Java.corba包和java.corba.orb包这两个包将CORBA(Common Object Request Broker Architecture,是一种标准化接口体系)嵌入到Java环境中,使得Java程序可以存取、调用CORBA对象,并与CORBA对象共同工作。这样,Java程序就可以方便、动态地利用已经存在的由Java或其它面向对象语言开发的部件,简化软件的开发。91*第91页,共1

48、20页。第3章类和对象第92页,共120页。主要内容3.1 概述3.2 类和对象的定义及使用类的定义类、成员变量、成员方法创建对象对象的使用对象的清除3.3 实例变量、实例方法和类变量、类方法3.4 this 关键字3.5 包3.6 内部类和匿名类3.7 访问控制和类的封装性93*第93页,共120页。3.1 概述3.1.1 对象(object)3.1.2 类(class)3.1.3 消息(message)3.1.4 面向对象系统的特性1. 抽象性(abstract)2封装性(encapsulation)3继承性(inheritance)4多态性(polymorphism)94*第94页,共1

49、20页。3.2 类和对象的定义及使用进行Java程序设计,实际上就是定义类的过程。一个Java源程序文件往往是由许多个类组成的。从用户的角度看,Java源程序中的类分为两种: 1. 系统定义的类,即Java类库。基类:所有JAVA的类都派生自ObjectJava的类可组织在包(package)中Java提供的标准类库分布在一系列的包中,如java.lang,java.awt,等,jdk1.1后加入javax.swing等2. 用户自己定义的类。编程的过程就是继承基类或标准类而创建、定义特殊子类的过程95*第95页,共120页。3.2.1 类的定义Java中类包括成员变量和成员方法两部分。类的成

50、员变量可以是基本数据类型的数据或数组,也可以是一个类的实例;类的方法用于处理该类的数据。 1. 类的定义格式:类的修饰字 class 类名称 extends 父类名称implements 接口名称列表 变量定义及初始化; 方法定义及方法体;类体96*第96页,共120页。类的修饰字: public |default(可缺省,非公开类) abstract | final public:允许其他类(没有限制)访问本类,一个源文件仅可以有一个public类,且与文件同名。default(缺省):可被当前包中的其他类访问;如果定义时没有public,则所有的类都是friendly;abstract:没

51、有实例的抽象概念类final:不能再被扩展,不包含子类的类;易于安全性的实现,或用于创建固定功能的类每个类都拥有自己的名字空间,即指类及其方法和变量可以在一定的范围内知道彼此的存在,可以使用。父类继承声明:extends 父类名(见继承)实现接口(interface):implements 接口名关于类定义的说明97*第97页,共120页。例:定义圆类/ Circle.javapublic class Circle private double radius = 1; / 圆的半径 private static int numberOfObjects = 0; / 创建的圆的个数 / 以半径1

52、创建一个圆,圆的个数加1 public Circle() numberOfObjects+; / 以半径newRadius创建一个圆,圆的个数加1 public Circle(double newRadius) radius = newRadius; numberOfObjects+; 98*第98页,共120页。/ 获取圆的半径 public double getRadius() return radius; / 设置圆的半径 public void setRadius(double newRadius) radius = (newRadius = 0) ? newRadius : 0; /

53、 获取圆的个数 public static int getNumberOfObjects() return numberOfObjects; / 返回圆的面积 public double findArea() return radius * radius * 3.14159; 99*第99页,共120页。2.类定义中成员变量的声明修饰符访问控制符(访问权限)public:可被所有其他类引用protected:该类自身、子类、同一包中的其他类private:仅可被该类自身引用和修改,不能被其他任何类(包括子类)引用default(缺省):本包中的类变量修饰字 变量数据类型 变量名1,变量名2=变

54、量初值;public | protected | private static final transient volatile100*第100页,共120页。static: 类变量或类字段,对所有的实例一致,引用时前缀可使用类名或对象名,属于类。final:数值不变常量,定义同时应对其进行初始化volatile:异步控制修饰符,表示多个并发线程共享的变量,这使得各线程对该变量的访问保持一致。transient:与对象序列化有关101*第101页,共120页。3. 类定义中方法的声明访问控制符(权限):public、private、protected、default(缺省)方法修饰字 返回类型

55、 方法名称(参数1,参数2,) throws exceptionList (statements;) /方法体:方法的内容public | protected | private static final | abstract native synchronized102*第102页,共120页。修饰符(Modifier):static:静态方法,又称类方法使用类名或对象名作为前缀,建议使用类名在方法体中只能使用static变量和static方法或访问自己的局部变量abstract:只有接口没有语句,要在子类中通过重新定义(override)来实现final:不能被重新定义(override)

56、103*第103页,共120页。throws:通告本方法中会产生的例外(异常)类型,提醒调用者要对相应的可能例外进行处理。当执行此方法并发生了例外时,程序会转入调用者编制的例外处理程序段。104*第104页,共120页。3.2.2 创建对象创建一个类,就创建了一种新的数据类型;声明一个类的变量,就是声明了该类的一个实例,即对象。创建对象包括声明对象、实例化对象即为对象分配存储空间两步 。1. 声明对象类名 对象名表;例:Circle circleOne, circleTwo;105*第105页,共120页。2. 建立对象使用new运算符和类的构造方法为声明的对象分配内存空间,如果类中没有构造方

57、法,系统会调用默认的无参构造方法。 格式:对象名=new 构造方法(形参列表); 例如:circleOne = new Circle(); / 此时circleOne引用被分配内存空间的其实地址circleTwo = new Circle(2.0); 106*第106页,共120页。3.2.3 对象的使用在程序中创建对象的目的是使用对象。创建一个对象就要为对象的各个成员变量分配存储空间。可以通过引用对象的成员来使用对象:对象数据成员的引用方式如下:对象名.数据成员名对象的成员方法的引用方式如下:对象名.成员方法名(实际参数表)示例:参看例3.1107*第107页,共120页。3.2.4 对象的

58、清除。Java运行时系统通过垃圾自动回收机制周期性地释放无用对象所使用的内存,完成垃圾的自动回收。当一个对象的引用为空时,该对象称为一个无用对象。垃圾收集器以较低优先级在系统空闲周期中执行,一次垃圾的收集速度比较慢,在某些情况下,我们也可以通过调用System类的gc()方法,即调用System.gc()显示执行垃圾收集。 108*第108页,共120页。3.3 实例变量、实例方法和类变量、类方法在类的数据成员和方法成员前用static关键字修饰的分别称为类变量和类方法,也称为静态变量和静态方法,非静态的又分别称为实例变量和实例方法。在生成每个类的实例对象时,Java运行时系统为每个对象分配一

59、块内存,然后可以通过对象引用变量来访问这些对象的实例变量。不同对象的实例变量是不同的。 109*第109页,共120页。3.4 this关键字关键字this用来指向当前对象或类的实例变量。如果局部变量与实例变量重名,则局部变量优先,同名的实例变量或类变量被隐藏。例:class TestThis int day = 1; void setDay(int day) this.day = day; 110*第110页,共120页。3.5 包包(package)是Java提供的文件(即公共类)的组织方式。一个包对应一个文件夹,一个包中可以包括许多类文件。包中还可以再有子包,称为包等级。 包的作用有四个:(1) 定位类:具有相似功能的类可以放置在同一个包中,这样可以很容易地查找定位类。(2) 避免命名冲突:在开发由其他程序员共享的可复用类时,会发生命名冲突,可以把类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论