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

下载本文档

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

文档简介

第1章 Java概述,Java概述,2,本章主要内容,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 程序结构及各自编译、运行的过程 作业,Java概述,3,1.1.1 Java的诞生,前身:OAK(James Gosling 1990) Java大事记 90年,Sun公司开始Green工程 93年,WWW席卷全球 94年,开始定位于Internet 95.1,Java命名 Hotjava, 第一个支持Java的浏览器 Netscape2.0,Java的诞生与发展,Java概述,4,1.1.2 Java的发展,发展:面向网络应用,类库不断丰富,性能不断提高,应用领域不断拓展。 1995.5.23 Java诞生(Java1.0.2 API) 1997.2.18 JDK1.1 VJ+6.0、cafe、JBuilder . 支持 1998.12 JDK1.2 (Java 2 SDK v1.2 Standard Edition) 网址(查询新动向) ,Java的诞生与发展,Java概述,5,Java的发展,Java版本与Java开发环境的关系 Java1.2开始,JDK更名为SDK JDK1.2开发Java1.2,JDK1.3开发Java1.3,JDK1.4开发Java1.4 Java1.x统称为Java 2程序 JDK1.5,Java的诞生与发展,Java概述,6,Java2.0开始,JDK 分为三个版本 J2EE(企业级版本) J2SE(标准版本) J2ME(微型版本),1.1.3 Java的现状与应用,Java的诞生与发展,Java概述,7,1.2.1 Java是什么,A simple,object-oriented, distributed, interpreted, robust, secure, architecture-neutral, portable, high- performance, multi-threaded, dynamic language. 一种OOP语言 一个平台(JVM和Java API),Java概述,8,1.2.2 Java的特点,Java= “C+” “复杂性和奇异性” + “安全性和可移植性”,Java概述,9,Java的特点,面向对象 完全基于类、对象:OOA,OOD,OOP 以类的形式组织代码,数据类型 封装、继承、多态,Java概述,10,Java的特点,简单:Java最初是为家用电器进行集成控制而设计的一种语言,因此它必须简单明了。其简单性主要体现在三个方面。 C+like 摒弃了C+中容易引发程序错误的一些特性,如指针、结构、枚举等,并能进行自动内存管理。 提供了丰富的类库,Java概述,11,Java的特点,分布式 健壮性(鲁棒性) 检查数据类型的匹配,数组下标越界 不支持指针,保护内存数据、程序 自动内存管理,碎片收集(垃圾回收机制) 例外控制机制,正确处理运行时错误 安全性 删除指针和释放内存等C+功能 Java的安全体系架构,Java概述,12,Java的特点,解释执行 结构中立:字节码与计算机结构无关 可移植 语言规范避免了与具体实现有关的描述 多线程:支持多任务 高效: JIT(Just-In-Time)及时编译器 动态:可动态增加和修改类库内容,Java概述,13,1.3 Java与C/C+的区别,1全局变量 2条件转移指令 3指针 4内存管理 5数据类型的一致性 6类型转换 7头文件 8编译预处理,Java概述,14,9结构体和共用体 10常量 11多重继承 12异常处理 13.面向对象程序设计,Java概述,15,1.4.1 Java的工作原理,Java平台的两个组件 Java VM是Java平台的基础 Java API是预先建立的软件组件的集合,提供丰富的功能,如GUI部件。 Java API被分为相关类和接口的库,这些库称为包(package),Java概述,16,Java API和Java VM将程序与硬件分离从而实现跨平台功能,Java,Java概述,17,Java虚拟机,Java虚拟机(JVM) Java处理器“芯片”,一般由软件实现,Java概述,18,问:JVM是不是跨平台的?,不是,不同的平台分别设计不同的JVM。Java字节码没有保存特定平台的信息。,Java概述,19,Java的工作方式,文件类型 .java Java源文件 .class 二进制字节码文件 运行机制 对于大多数语言,要运行程序,要么编译程序要么解释程序;而Java语言的程序则既要被编译又要被解释。,Java概述,20,Java的工作方式,编译程序将Java源程序翻译为字节码(bytecode)程序; 解释程序Java虚拟机分析并运行字节码程序。 一次编写,处处运行 Write once,run anywhere!,Java概述,21,用Java源程序先被编译、后被解释,Java概述,22,1.4.2 Java的运行系统,Java的运行系统是各平台厂商对JVM的具体实现。对于Java中的两类程序:Java Application(Java应用程序)和Java Applet(Java小应用程序),存在两种不同类型的运行系统;对于Java Application,运行系统是Java解释器;而对于Java Applet,运行系统是指Java兼容的Web浏览器,该浏览器中包含了支持Applet运行的环境。,Java概述,23,1.5.1 JAVA开发工具,JDK系列(Sun)命令行 Java WorkShop(Sun) Symantee CAF JCreator JBuilder(Borland) Visual J+(MicroSoft) Java Studio (Sun) Visual Age for Java(IBM),OPTIONAL,Java概述,24,1.5.2 JDK下载与安装,为了鼓励使用Java语言开发软件,Sun Microsystems公司提供了免费的软件开发工具包(SDK),其中包括编译器、虚拟机、调试器等开发工具,称为Java开发工具包或JDK。 JDK (可从下载) jdk-1_5_0_08-windows-i586-p jdk-1_5_2-doc.zip,Java概述,25,Java 2 SDK,Java概述,26,安装JDK后产生如下目录结构:,bin目录:Java开发工具,包括Java编译器、解释器等 demo目录:一些实例程序 lib目录:Java开发类库 jre目录: Java运行环境,包括Java虚拟机、运行类库等 ,Java概述,27,JDK实用程序,javac Java编译器,将Java源程序编译成字节码 java Java解释器,直接从类文件执行Java应用程序,即application appletviewer 小程序浏览器,执行html文件上的Java小程序,即Applet,Java概述,28,设置环境变量:,PATH=e:jdk1.5.0_08bin; CLASSPATH=. ;,Java概述,29,1.6 简单的Java程序,Java程序分两种: Java应用程序(Java Application) 1.普通桌面应用 2.服务器端应用 Java小程序(Java Applet)(由浏览器解释执行),Java程序,Java概述,30,1.6.1 Java 应用程序,【例1.1】从键盘上输入圆的半径,求圆的周长和面积。 /* *从键盘上输入圆的半径,求圆的周长和面积。 */ public class PerimeterAreaOfCircle final static double PI=3.1415926; / 定义常量PI public static void main(Stringargs) double r,perimeter,area; r=Double.parseDouble(args0);,Java程序,Java概述,31,/*从命令行读入的字符串args0转换为实型dobule,Double是系统提供的一个类,parseDouble()是其中的一个方法,用于实现字符串转换为double。*/ perimeter=2*PI*r; area=PI*r*r; System.out.println(“圆的周长为:“+perimeter); / 实现字符串的输出 System.out.println(“圆的面积为:“+area); ,Java概述,32,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 String(“Hello World!“); public void paint(Graphics g) g.drawString(s,25,25); / 在浏览器中坐标为(25,25)的位置显示字符串s ,Java程序,Java概述,33,(2) 编译小应用程序 使用javac.exe编译Java Applet源程序代码,生成名为HelloWorldApplet.class的字节码文件。如果给出错误信息,则需要重复编辑和编译过程,直到程序没有错误、编译成功为止。 (3) 编辑HTML网页文件 Java Applet Example Java小应用程序 ,Java概述,34,简单编写HTML文件: HelloApplet.html,Java程序,也可最简化建立HelloApplet.html文件,嵌入HelloApplet.class,Java概述,35,Java小应用程序不能直接执行和使用,必须要在浏览器中执行。 运行applet程序: 1. appletviewer index.html,Applet程序的运行,Java程序,Java概述,36,2. 在浏览器中运行,直接在浏览器中打开index.html程序,在主流的浏览器如IE、Netscape中都包含有java虚拟机,负责解释执行java applet程序。,Java概述,37,作业,熟悉JDK开发环境 下载课上的例子,观察结构并执行 编写一个Application,在屏幕上显示如下的信息: * Welcome * 把上题改写为Applet。,第2章 Java应用基础,Java概述,39,主要内容,2.1 标识符、关键字 标识符 关键字 2.2 基本数据类型 2.3 常量、变量 常量 变量 2.4 运算符与表达式 2.5 流程控制语句 2.6 Java开发类库组成 掌握java.lang包,Java概述,40,2.1 标识符、关键字,Java语言使用国际字符集(Unicode)。Unicode字符集定义了一套国际标准字符集。通常的ASCII码是8位的,而Unicode字符集中的每个字符占16位,即2个字节,整个字符集共包括65336个字符,兼容ASCII,排在Unicode字符集最前面的256个字符就是ASCII码。Unicode除了可以表示256个ASCII码外,还可以表示汉字、拉丁语、希腊字母、朝鲜语等。,Java概述,41,2.1.1 标识符,标识符是赋予变量、类、方法、数组、文件等的名称。 Java语言规定标识符是以字母、下划线“_”或美元符号“$”开始,随后可跟数字、字母、下划线或美元符号的字符序列。 Java标识符大小写敏感,没有长度限制,可以为标识符取任意长度的名字,但关键字不能作为标识符。,Java概述,42,关于标识符,为增强程序可读性,Java作如下的约定: 类、接口:通常使用名词,且每个单词的首字母要大写 方法:通常使用动词,首字母小写,其后用大写字母分隔每个单词 常量:全部大写,单词之间用下划线分隔 变量:通常使用名词,首字母小写,其后大写字母分隔每个单词,避免使用$符号。 例: 下面是合法的标识符: identifier thisone UserName User_name _system_varl $max 下面是不合法的标识符: 8_value (不能以数字打头) $book*c (不能包含非法字符*),Java概述,43,2.1.2 关键字,关键字是指对编译器有特殊意义,在程序中不能用作其它目的的字符序列,关键字都是由小写字母组成的 。 Java中的关键字: abstract boolean break byte case catch char class continue default do double else extends final finally float for if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient try void volatile while,Java概述,44,关于关键字,true和false不是关键字,类似地,对象值null也没有列入关键字。但是不能把它们派作其它用途。 还有些关键字,如cast、future、goto、generic、inner、operator、outer、rest、var等都是Java保留的没有意义的关键字。,Java概述,45,2.2 基本数据类型,数据类型规定一类数据的数据位长度,取值范围,以及对该类数据所能进行的操作。Java数据类型分为基本数据类型和引用数据类型(引用类型又称为组合类型) 。 Java语言定义了8种基本数据类型,其分类及关键字如下: 整型:byte、short、int、long 浮点型:float、double 字符型:char 布尔型:boolean,Java概述,46,表2.1 Java中的基本数据类型,Java概述,47,2.3 常量、变量,Java语言中存在着两种表征数据的形式:常量与变量。 常量:程序运行过程中保持不变,并且不可进行修改的量。 变量:用来存放数据且其值可以改变的量称为变量。,Java概述,48,2.3.1 常量,Java语言中常量有两种类型: 一种称为直接常量也称为值常量,如12、-33、15.6;有多种类型:、 另一种称为符号常量,符号常量需要明确定义。 Java语言中使用关键字final来定义符号常量,如下所示: final double PI=3.1415926; 其中PI即符号常量。 double是该符号常量的类型。 注意:符号常量实质上是一种特殊的变量,也是占用内存空间的,不同于C语言编译预处理定义的宏。,Java概述,49,1整型常量(byte、short、int、long),整型常量可以用来给整型变量赋值,可以用十进制、八进制和十六进制来表示。 (1) 十进制整型常量由0至9的数字组成,没有前缀,不能以0开始,没有小数部分。例如:124,-36等。 (2) 八进制整型常量,以0为前缀,其后由0到7的数字组成,没有小数部分。例如:0332,-0122等。 (3) 十六进制整型常量,以0x或0X为前缀,其后由0到9的数字和A到F(大小写均可)字母组成,没有小数部分。例如:0x3A,0X43f等。,Java概述,50,2浮点型常量(float、double),浮点型常量有两种表示方式: (1) 十进制小数表示法,它是由整数部分和小数部分组成的。如:4.0 ,33.32等。小数点两边的数字不能同时省略且小数点不能省略。 (2) 科学计数法表示,它常用来表示很大或很小的数,如1.21026在Java中表示为1.2E26。表示方法是在小数表示法后加e(或E)及指数部分。但要注意,e(或E)前面必须有数字,指数部分可正可负,但都是整数(正号可省略)。例如,4.2E-5,3e6等。,Java概述,51,3.布尔型常量boolean,布尔型常量值只有true和false,true和false必须要小写。true表示“逻辑真”,false表示“逻辑假”。注意,和C/C+语言不同,在Java语言中不能认为“非0值或1”是true,“0值”是false。,Java概述,52,4字符型常量,Java中的字符采用Unicode字符集的编码方案,是16位的无符号整数,占2个字节,表示的字符从065535。 Unicode字符集可以支持各类文字的字符。 字符型常量分为一般字符常量和转义字符常量。对于可输入字符,用单引号将字符括起来,如a, A, 我等。对于不可输入字符,采用转义字符表示。,Java概述,53,表2.2 转义字符,Java概述,54,5字符串常量,字符串并不是Java的基本数据类型,它是Java提供的位于java.lang包中的String类,字符串常量就是字符串类java.lang.String类的一个对象,故它可以使用类String中的方法,所有字符串常量值都用双引号括起来。 需要注意的是null可以简单视为一个引用类型的常量值,表示不引用任何对象。在Java编码规范中,规定null是所谓null类型的唯一值,且规定null可转换到任何引用类型。,Java概述,55,2.3.2 变量,每个变量都要有个名字,变量名必须是合法的标识符,并且最好具有一定的意义,有意义的变量名可以提高程序的可读性。比如,要定义一个表示学生数量的变量,用student_num做变量名要比用k更合适。 所有变量在使用之前必须被定义,格式如下: 数据类型关键字 变量名=初始值;,Java概述,56,例: / x为基本整型 int x; / y为浮点数(单精度),并且赋给初始值3.14 float y=3.14; / 可以在一个语句中声明多个同一类型的变量 long area,width,length;,Java概述,57,2.4 运算符与表达式,对各种类型的数据进行加工的过程称为运算,表示各种不同运算的符号称为运算符,参与运算的数据称为操作数。运算符的优先级与结合性如表所示。 一个Java表达式是由操作数和运算符按一定的语法规则组成的符号序列。,Java概述,58,Java概述,59,2.4.1 赋值运算符和赋值表达式,1赋值运算符 Java中,“=”被称为赋值运算符,它的作用是设置变量的值,即将一个数据赋给一个变量,实际上是将特定的值写到变量所对应的内存单元中。赋值运算符是双目运算符,因为“=”两边都要有操作数。“=”左边是待赋值的变量,右边是要赋的值。 除了“=”基本赋值运算符外,另外还有几个复合赋值运算符:+=、-=、* =、/=和%=;五个由位运算符和赋值运算符组成的复合赋值运算符:=、&=、|=、和=。,Java概述,60,2赋值表达式 我们可以用常量对变量赋值,也可以用变量对变量赋值,还可以用任何表达式对变量赋值。用赋值运算符连接起来的式子称为赋值表达式。赋值表达式的值就是被赋值的变量的值。赋值表达式加上分号就构成了赋值语句,是极为常用的Java语句。 示例:参看例2.3,Java概述,61,2.4.2 算术运算符和算术表达式,1算术运算符 Java提供的算术运算符包括:加(+)、减(-)、乘(*)、除(/)和取余(%)。算术运算符是双目运算符。利用算术运算符连接起来的式子称为算术表达式。 2自增、自减运算符+、- Java中还另外提供了两个用于算术运算的单目运算符:自增运算符+和自减运算符-。其功能是使变量的值增1或减1。使用这两个运算符,可以让程序更为简化、更容易阅读。+和-运算符有一个特点,就是它们既可以位于变量名的左边(称为前自增、前自减),又可以位于变量名的右边(后自增、后自减),但结果却是不一样的。+和运算有以下四种情况:,Java概述,62,(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。 注意:+和-运算符只能用于变量,不能用于常量和表达式。因为+和-蕴含着赋值操作。+和-运算符经常用于循环程序设计中。,Java概述,63,2.4.3 关系运算符和关系表达式,1关系运算符 关系运算符又称比较运算符,因为关系运算实际上是比较大小的运算。Java提供了6种关系运算符:、=、5的值是“真”,而x1的值是“假”。,Java概述,64,2.4.4 逻辑运算符和逻辑表达式,1逻辑运算符 Java提供了3种逻辑运算符,&(与)、|(或)、!(非)。 a&b:只有a与b都为true,结果才为true,否则为false。 a|b:只有a与b都为false,结果才为false,否则为true。 !a:与a的值相反。 2逻辑表达式 用逻辑运算符连接起来的式子称为逻辑表达式,用于表示复杂的运算条件。,Java概述,65,有一点需要指出,在逻辑表达式求值的过程中,并不是所有的逻辑运算都被执行,即在Java中要进行所谓的短路计算。例如: (1) 在求解a&b&c的值时,只有a的值是真时,才会计算b的值;只有a和b均为真时,才会计算c 的值。如果a为假,则不会继续计算b和c的值,因为整个表达式的值已经确定了。 (2) 在求解a|b|c的值时,只有a是假时,才会计算b的值;只有a和b均为假时,才会计算c的值。如果a是真,就不会计算b和c的值,因为整个表达式的值已经确定了。Java编译程序按照“短路”计算方式来生成目标代码。,Java概述,66,2.4.5 条件运算符和条件表达式,条件运算符是Java提供的唯一一个三目运算符。用条件运算符连接起来的式子称为条件表达式。条件表达式的格式是: 表达式1?表达式2:表达式3 条件表达式的运算规则如下:如果表达式1的值为真,那么整个条件表达式的值就是表达式2的值,否则整个条件表达式的值是表达式3的值。 例: 46?3:9 / 整个表达式的值为9,Java概述,67,2.4.6 位运算符和位表达式,位运算符的作用在于对整数数值的二进制表示进行运算,像二进制的AND与OR等运算。 (1) 按位求反运算符 对操作数的二进制数据的每一个二进制位都取反,即1变成0,而0变成1。如8的结果为-9。 (2) 位与运算符& 参与运算的两个操作数,相应的二进制数位进行位与运算。如5&11结果为1。 (3) 位或运算符| 参与运算的两个操作数,相应的二进制数位进行位或运算。如5|11结果为15。 (4) 位异或运算符 参与运算的两个操作数,相应的二进制数位进行位异或运算。如511结果为14。,Java概述,68,(5) 保留符号位的右移运算符 将一个操作数的各个二进制位全部向右移若干位,这个位数由右操作数来决定,移到右端的低位被舍弃,左边空出的位全部用最高位的符号位来填充。如51结果为2。91,结果为5。 (6) 不保留符号位的右移运算符 与不同的是,右移后左边空出的位用0填充。如51结果为2。91,结果为2147483643。 (7) 左移运算符 将一个操作数的所有二进制位向左移若干位,右边空出的位填0。若高位左移后溢出,则舍弃溢出的数。如51结果为10。,Java概述,69,2.5 流程控制语句,程序控制可以定义为对程序语句的执行顺序进行的规定。 有三种结构: 顺序结构 分支结构 循环结构 为了实现程序执行点的流程控制,Java提供了如下的分支、循环语句: 分支控制语句包括:if-else、switch-case。 循环控制语句包括:while、do-while和for。 跳转语句:break、return和continue。,Java概述,70,除了上面的流程控制语句,还有两类特殊的语句: (1) 异常处理语句:如try-catch-finally、throw等。参见第6章。 (2) 注释语句。 Java与C/C+之间的差别很细微,可归纳为两点: (1) 在C语言中,条件表达式可以是数值型,而在Java条件语句中,条件表达式必须是布尔型,不能是数值。 (2) Java取消了对goto语句的支持。goto语句的使用一直是程序设计者争论的话题,这是因为goto语句的使用不仅降低了程序的可读性,而且往往会带来一些不可预测的错误。,Java概述,71,2.5.1 顺序结构,顺序结构是最简单、最基本的结构,在顺序结构内,顺序执行各个语句。图2.1表示了一个顺序结构形式,从图中可以看出它有一个入口a点,一个出口 b点,在结构内A框和B框都是顺序执行的处理框。,Java概述,72,空语句、表达式语句、复合语句是Java程序依次顺序执行的语句,故又称为顺序结构。 空语句是仅由分号构成的语句,表示什么动作都不做。 一个表达式加上一个分号就是一个表达式语句,只有少量的几种表达式才能构成表达式语句。它们是:由赋值运算符构成的表达式、由+或-构成的表达式、方法调用、new 表达式。 标号语句的格式为: 标识符: 其中:可为任何合法的Java语句。 复合语句是指由一对花括号括起来的任意数量的语句,有时又称为块语句或组语句。 示例:参看例2.4,Java概述,73,2.5.2 选择结构,1.if语句 (1) 简单if语句 if (布尔表达式) 语句(组); 其执行过程是:首先计算布尔表达式的值,若为真true,则执行块内语句,否则,if语句终止执行,即不执行块内语句而执行if语句后面的其它语句,如图2.2(a)所示。 示例:参看例2.5,Java概述,74,(2) if-else语句 if (布尔表达式) 语句(组)A; else 语句(组)B; 其执行过程是: 首先计算布尔表达式的值,若为真,则执行语句(组)A,否则执行语句(组)B, 如图2.2(b)所示。 示例:参看例2.6,Java概述,75,(3) if语句的嵌套 if语句中的任何一个子句可以是任意可执行语句,当然也可以是一条if语句,这种情况称为if语句的嵌套。当出现if语句嵌套时,不管书写格式如何,else都将与它前面最靠近的未曾配对的if语句相配对,构成一条完整的if语句。嵌套的深度没有限制,if语句的嵌套可以实现多重选择。 示例:参看例2.7,Java概述,76,2switch语句,switch语句是多分支选择语句,又称开关语句。 switch语句的一般形式如下: switch(表达式) case 常量表达式1: 语句组1; break; case 常量表达式2: 语句组2; break; case 常量表达式n: 语句组n; break; default: 语句组n+1; ,Java概述,77,2.5.3 循环结构,循环结构是指在一定条件下反复执行一个程序块的结构。循环结构也是只有一个入口,一个出口。根据循环条件的不同,循环结构分为当型循环结构和直到型循环结构两种。,Java概述,78,当型循环的结构如图2.5,其功能是:当给定的条件p成立时,执行A框操作,执行完A操作后,再判断p条件是否成立,如果成立,再次执行A操作,如此重复执行A操作,直到判断p条件不成立才停止循环。此时不执行A操作,而从出口b跳出循环结构。,Java概述,79,直到型循环的结构如图2.6,其功能是,先执行A框操作,然后判断给定条件p是否成立,如果成立,再次执行A操作;然后再对p进行判断,如此反复,直到给定的p条件不成立为止。此时不再执行A框,从出口b跳出循环。,Java概述,80,Java语言中,实现循环结构的控制语句有while、dowhile、for语句。 1. while循环 while语句用来实现“当型”循环结构,即先判断表达式,后执行语句。其一般形式如下: while (循环条件) 语句; / 循环体 示例:参看例2.10,Java概述,81,2. do-while 循环 do-while语句用来实现“直到型”循环结构,即先执行循环体,然后判断循环条件是否成立。其一般形式如下: do 语句; / 循环体 while (循环条件); 示例:参看例2.11,Java概述,82,3. for循环 for语句是java语言中使用灵活方便的一种循环语句,它不仅用于循环次数已知的情况,还能用于循环次数预先不能确定只给出循环结束条件的情况。 for语句的一般形式为: for(表达式1;表达式2;表达式3) 语句; / 循环体 示例:参看例2.12,Java概述,83,4break、continue、标号、return语句、System.exit()方法 Java中可以用break和continue两个循环跳转语句进一步控制循环。这两个语句的一般格式如下: break label; / 从所在的switch语句、循环语句中跳出。 continuelabel; / 跳过循环体的剩余语句,开始执行下一次循环。 break和continue可以用在三种循环语句中的任意一种。 这两个语句都可以带标号使用,也可以不带标号使用。标号是出现在一个语句之前的标识符,标号后面要加一个冒号,定义如下: label: statement; 示例:参看例2.13与2.14,Java概述,84,return语句和System.exit()方法 return语句用来从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续执行。如果在main()方法中执行return语句,则使程序执行返回到Java运行系统,因为Java运行系统调用了main()方法。 要想从程序的任意地方直接一步到位地退出程序,而不是返回到调用该方法的语句处,可以使用System.exit()方法。,Java概述,85,5. 循环的嵌套 一个循环体内包含另一个完整的循环结构称为循环的嵌套,内嵌的循环中还可以嵌套循环,这就是多重循环。 示例:参看例2.15与2.16,Java概述,86,2.6 Java开发类库组成,Java提供了丰富的标准类来帮助程序设计者更方便快捷地编写程序,这些标准类组成了类包,主要有: java.lang java.awt java.applet java.awt.image java.awt.peer java.io java.util 除了java.lang之外,其余类包都不是java语言所必须的。,Java概述,87,1. java.lang,本类包中包含了各种定义Java语言时必须的类,这些类能够以其它类不能使用的方式访问java的内部。任何java程序都将自动引入这个包。其中的类包括: Object类:java中最原始、最重要的类,每个java类都是它的子类,它实现了每个类都必须具有的基本方法。 基本类型包装器:Boolean, Character, Number, Double, Float, Integer, Long。 String类:字符串类。 Math类:数学函数的集合。 执行线程:类Thread, ThreadGroup, 接口Runable。 System类和Runtime类:可以通过类Runtime和System访问外部系统环境。System类的两个常用功能就是访问标准输入/输出流和错误流、退出程序。 异常和错误:类Exception, Error, 接口Throwable。 其它类:接口Cloneable、运行时的类等。,Java概述,88,2. java.applet Java Applet是Java编程的一个主要魅力,java.applet类包提供了Applet的运行机制以及一些编写Applet非常有用的方法。 3. java.awt 本类包是各种窗口环境的统一界面(AWT代表Abstract Windows Toolkit,即抽象窗口工具包),其中的类使得创建诸如窗口、菜单、滚动条、文本区、按钮以及复选框等图形用户界面(GUI)的元素变得非常容易。 4. java.awt.image 本类包能够以独立于设备的方式加载并过滤位图图像。 5. java.awt.peer java.awt.peer是全部awt组件的对等对象接口的集合,每个接口都提供了机器相关的基本方法,awt使用这些方法来实现GUI,而不必关心是何种机器或操作系统。,Java概述,89,6.java.io Java的输入/输出模式是完全建立在流的基础之上的。流是一种字节从一个地方到另一个地方的单向流动,可以把流附加于文件、管道和通信链路等。java.io类包中定义的许多种流类通过继承的方式进行组织,其中也包括一些用来访问本地文件系统上的文件流类。 7. 类包用来完成与网络相关的功能:URL、WWW连接以及更为通用的Socket网络通信。 8. java.util java.util类包包含了一些实用类和有用的数据结构,如字典(Dictionary)、散列表(Hashtable)、堆栈(Stack)、向量(Vector)以及枚举类(Enumeration)等,使用它们开发者可以更方便快捷地编程。,Java概述,90,9. java.rmi包、java.rmi.registry包和java.rmi.server包 这三个包用来实现RMl(remote method invocation,远程方法调用)功能。利用RMI功能,用户程序可以在远程计算机(服务器)上创建对象,并在本地计算机(客户机)上使用这个对象。 10. java.sql包 java.sql包是实现JDBC(Java database connection)的类库。利用这个包可以使Java程序具有访问不同种类的数据库(如Oracle,Sybase,DB2,SQLServer等)的功能,只要安装了合适的驱动程序,同一个Java程序不需修改就可以存取、修改这些不同的数据库中的数据。JDBC的这种功能,再加上Java程序本身具有的平台无关性,大大拓宽了Java程序的应用范围,尤其是商业应用的适用领域。,Java概述,91,11. java.security包、java.security.acl包和erfaces包 这三个包提供了更完善的Java程序安全性控制和管理,利用它们可以对Java程序加密,也可以把特定的Java Applet标记为“可信赖的”,使它能够具有与Java Application相近的安全权限; 12.Java.corba包和java.corba.orb包 这两个包将CORBA(Common Object Request Broker Architecture,是一种标准化接口体系)嵌入到Java环境中,使得Java程序可以存取、调用CORBA对象,并与CORBA对象共同工作。这样,Java程序就可以方便、动态地利用已经存在的由Java或其它面向对象语言开发的部件,简化软件的开发。,第3章 类和对象,Java概述,93,主要内容,3.1 概述 3.2 类和对象的定义及使用 类的定义 类、成员变量、成员方法 创建对象 对象的使用 对象的清除 3.3 实例变量、实例方法和类变量、类方法 3.4 this 关键字 3.5 包 3.6 内部类和匿名类 3.7 访问控制和类的封装性,Java概述,94,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),Java概述,95,3.2 类和对象的定义及使用,进行Java程序设计,实际上就是定义类的过程。一个Java源程序文件往往是由许多个类组成的。从用户的角度看,Java源程序中的类分为两种: 1. 系统定义的类,即Java类库。 基类:所有JAVA的类都派生自Object Java的类可组织在包(package)中 Java提供的标准类库分布在一系列的包中,如java.lang,java.awt,等,jdk1.1后加入javax.swing等 2. 用户自己定义的类。 编程的过程就是继承基类或标准类而创建、定义特殊子类的过程,Java概述,96,3.2.1 类的定义,Java中类包括成员变量和成员方法两部分。类的成员变量可以是基本数据类型的数据或数组,也可以是一个类的实例;类的方法用于处理该类的数据。 1. 类的定义格式:,Java概述,97,类的修饰字: public |default(可缺省,非公开类) abstract | final public:允许其他类(没有限制)访问本类,一个源文件仅可以有一个public类,且与文件同名。 default(缺省):可被当前包中的其他类访问;如果定义时没有public,则所有的类都是friendly; abstract:没有实例的抽象概念类 final:不能再被扩展,不包含子类的类;易于安全性的实现,或用于创建固定功能的类 每个类都拥有自己的名字空间,即指类及其方法和变量可以在一定的范围内知道彼此的存在,可以使用。 父类继承声明:extends 父类名(见继承) 实现接口(interface):implements 接口名,关于类定义的说明,Java概述,98,例:定义圆类,/ Circle.java public class Circle private double radius = 1; / 圆的半径 private static int numberOfObjects = 0; / 创建的圆的个数 / 以半径1创建一个圆,圆的个数加1 public Circle() numberOfObjects+; / 以半径newRadius创建一个圆,圆的个数加1 public Circle(double newRadius) radius = newRadius; numberOfObjects+; ,Java概述,99,/ 获取圆的半径 public double getRadius() return radius; / 设置圆的半径 public void setRadius(double newRadius) radius = (newRadius = 0) ? newRadius : 0; / 获取圆的个数 public static int getNumberOfObjects() return numberOfObjects; / 返回圆的面积 public double findArea() return radius * radius * 3.14159; ,Java概述,100,2.类定义中成员变量的声明,修饰符 访问控制符(访问权限) public:可被所有其他类引用 protected:该类自身、子类、同一包中的其他类 private:仅可被该类自身引用和修改,不能被其他任何类(包括子类)引用 default(缺省):本包中的类,变量修饰字 变量数据类型 变量名1,变量名2=变量初值;,public | protected | private static final transient volatile,Java概述,101,static: 类变量或类字段,对所有的实例一致,引用时前缀可使用类名或对象名,属于类。 final:数值不变常量,定义同时应对其进行初始化 volatile:异步控制修饰符,表示多个并发线程共享的变量,这使得各线程对该变量的访问保持一致。 transient:与对象序列化有关,Java概述,102,3. 类定义中方法的声明,访问控制符(权限): public、private、protected、default(缺省),方法修饰字 返回类型 方法名称(参数1,参数2,) throws exceptionList (statements;) /方法体:方法的内容 ,public | protected | private static final | abstract native synchronized,Java概述,103,修饰符(Modifier):,static:静态方法,又称类方法 使用类名或对象名作为前缀,建议使用类名 在方法体中只能使用static变量和static方法或访问自己的局部变量 abstract:只有接口没有语句,要在子类中通过重新定义(override)来实现 final:不能被重新定义(override),Java概述,104,throws: 通告本方法中会产生的例外(异常)类型,提醒调用者要对相应的可能例外进行处理。当执行此方法并发生了例外时,程序会转入调用者编制的例外处理程序段。,Java概述,105,3.2.2 创建对象,创建一个类,就创建了一种新的数据类型;声明一个类的变量,就是声明了该类的一个实例,即对象。创建对象包括声明对象、实例化对象即为对象分配存储空间两步 。 1. 声明对象 类名 对象名表; 例: Circle circleOne, circleTwo;,Java概述,106,2. 建立对象 使用new运算符和类的构造方法为声明的对象分配内存空间,如果类中没有构造方法,系统会调用默认的无参构造方法。 格式:对象名=new 构造方法(形参列表); 例如: circleOne = new Circle(); / 此时circleO

温馨提示

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

评论

0/150

提交评论