何厚峰java课件资料_第1页
何厚峰java课件资料_第2页
何厚峰java课件资料_第3页
何厚峰java课件资料_第4页
何厚峰java课件资料_第5页
已阅读5页,还剩353页未读 继续免费阅读

下载本文档

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

文档简介

1、Java语言(yyn)程序设计教案第一章:java语言(yyn)概论共三百五十八页1.1 Java 概 述 Java是一种编程语言,它提供了一个同时用于程序开发、应用和部署的环境。Java语言主要定位于网络编程,使得程序可以最大限度(xind)地利用网络资源。 共三百五十八页1.2 Java 语 言 的 特 点 1. 跨平台性 所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。这是软件发展的趋势和编程人员追求的目标。之所以这样说,是因为计算机硬件的种类繁多,操作系统也各不相同,不同的用户和公司有自己不同的计算机环境偏好,而软件为了能在这些不同的环境里正常运

2、行,就需要(xyo)独立于这些平台。共三百五十八页 而在Java语言中,Java自带的虚拟机很好地实现了跨平台性。Java源程序代码经过编译后生成二进制的字节码是与平台无关的,但是可被Java虚拟机识别的一种机器码指令。Java虚拟机提供了一个字节码到底层(d cn)硬件平台及操作系统的屏障,使得Java语言具备跨平台性。共三百五十八页 2. 面向对象 面向对象是指以对象为基本粒度,其下包含属性和方法。对象的说明(shumng)用属性表达,而通过使用方法来操作这个对象。面向对象技术使得应用程序的开发变得简单易用,节省代码。Java是一种面向对象的语言,也继承了面向对象的诸多好处,如代码扩展、代

3、码复用等。共三百五十八页 3. 安全性 安全性可以分为四个层面,即语言级安全性、编译时安全性、运行时安全性、可执行代码安全性。 语言级安全性指Java的数据结构是完整的对象,这些封装过的数据类型具有安全性。编译时要进行Java语言和语义的检查,保证每个变量对应一个相应的值,编译后生成Java类。运行时Java类需要类加载器载入,并经由字节码校验器校验之后才可以运行。Java类在网络上使用时,对它的权限进行了设置(shzh),保证了被访问用户的安全性。共三百五十八页 4. 多线程 多线程在操作系统中已得到了最成功的应用。多线程是指允许一个应用程序同时存在两个(lin )或两个(lin )以上的线

4、程,用于支持事务并发和多任务处理。Java除了内置的多线程技术之外,还定义了一些类、方法等来建立和管理用户定义的多线程。共三百五十八页 5. 简单易用 Java源代码的书写不拘泥于特定的环境,可以用记事本、文本编辑器等编辑软件来实现,然后将源文件进行编译,编译通过(tnggu)后可直接运行,通过(tnggu)调试则可得到想要的结果。共三百五十八页1.3 Java 应 用 分 类 1. 应用程序 典型的通用程序可以(ky)在具备Java运行环境的设备中独立运行,它又分为: GUI应用程序:即图形用户界面程序,可实现丰富的输入界面和输出显示。 命令行程序:无需界面,只需在命令行下运行,运行结果只在

5、后台发生变化,可以将输出存放到文件中。 嵌入式应用程序:Java语言的平台独立性决定了它可以嵌入到不同的设备中,且只需具备必要的运行环境即可。共三百五十八页 2. Servlets服务器端应用程序 服务器端的应用程序用来(yn li)收集客户端的数据输入,对数据进行处理之后,返回相应的响应给客户。它主要用来(yn li)实现与客户端的交互。共三百五十八页 3. Applets小应用程序 Applets应用于网络上,嵌入在HTML网页中,支持Java的浏览器都可以对它进行解释并运行。通常(tngchng)通过一个HTML标签来识别并运行Applets。小应用程序的类在服务器端,当浏览器显示网页时

6、,它随之下载到本地,由本地的浏览器载入运行。共三百五十八页1.4 JDK包的下载(xi zi)与安装 Java Develop Kit简称为JDK,是Sun公司免费发行的软件包,可以从Sun网站免费下载,也可以从其它国内地址下载。JDK版本从1.02开始,目前(mqin)版本发展到1.4,其中高级版本对低级版本实现向下兼容。运用这个软件包,就可以对Java源程序进行编译和运行。本书中下载使用的JDK包为j2sdk-1_4_0_012-windows-i586.exe。 下载后双击图标,即可进行安装,默认的安装目录为C:j2sdk1.4.0_01。本书作者将安装目录改为D:j2sdk1.4.0_

7、01。共三百五十八页1.5 Java 环 境 配 置 JDK包安装完成后,需要设置环境变量。用鼠标右键单击桌面上的图标“我的电脑(dinno)”,选择“属性”项,出现标题为“系统特性”的对话框,点击“高级”标签,可以看见有一个“环境变量”按钮,如图1.1所示。共三百五十八页图1.1 “系统(xtng)特性”对话框共三百五十八页 单击“环境变量”按钮,可以看见本机环境变量,如图1.2所示。上面为用户(yngh)变量,下面为系统变量,随着操作系统或用户(yngh)环境的不同,变量名、值有所不同。这里需要修改三个用户(yngh)变量:include、lib和path,分别将JDK包安装之后的相应路径

8、包含到这三个用户变量中。共三百五十八页图1.2 “环境变量”对话框共三百五十八页 选中include变量,单击“编辑”按钮,弹出标题(biot)为“编辑用户变量”的对话框,如图1.3所示。在变量值一栏的最后添加“; D:j2sdk1.4.0_01include”,“;”表示与前面的各项隔开,后面的路径是JDK包的安装路径下的include目录。图1.3为作者修改include变量的情况,注意你的安装路径可能与作者的有所不同,要以你的安装路径为基准进行修改。共三百五十八页图1.3 编辑(binj)include变量共三百五十八页 选中lib变量,单击“编辑”按钮,弹出标题为“编辑用户变量”的对话

9、框,如图1.4所示。在变量值一栏的最后添加“; D:j2sdk1.4.0_01lib”,“;”表示与前面的各项隔开,后面的路径是JDK包的安装路径下的lib目录。图1.4为作者修改(xigi)lib变量的情况,注意你的安装路径可能与作者的有所不同,要以你的安装路径为基准进行修改。共三百五十八页图1.4 编辑(binj)lib变量共三百五十八页 选中path变量,单击“编辑(binj)”按钮,弹出标题为“编辑(binj)用户变量”的对话框,如图1.5所示。在变量值一栏的最后添加“; D:j2sdk1.4.0_01bin”,“;”表示与前面的各项隔开,后面的路径是JDK包的安装路径下的bin目录。

10、图1.5为作者修改path变量的情况,注意你的安装路径可能与作者的有所不同,同样要以你的安装路径为基准进行修改。共三百五十八页图1.5 编辑(binj)path变量共三百五十八页1.6 例 子 程 序 【例1.1】源程序名称为HelloWorld.java,命令行提示符下输出字符串“Hello World”。源代码如下(rxi):/程序文件名称为HelloWorld.javapublic class HelloWorldpublic static void main(String args)System.out.println(Hello World);共三百五十八页 用记事本或者专用的编辑工

11、具如EditPlus等进行编辑,并将文件(wnjin)存为HelloWorld.java。建议使用像EditPlus这样的编辑软件,可使得代码更加清晰且风格良好。 运行“开始”菜单程序附件命令提示符,载入命令行程序,在命令行状态下,进入源程序所在的目录,图1.6所示的例子程序的目录在“E:_WorkJavasample”下,然后键入命令“javac HelloWorld.java”。若编译不通过,会产生错误提示。若编译通过,则没有任何提示,同时进入命令行等待状态,如图1.6所示。这时,命令行虽然没有提示,但在源程序的路径下生成一个新的文件为HelloWorld.class。这个.class文件

12、就是编译后生成的类文件,运行此文件,需在命令行状态中键入命令“java HelloWorld”,然后按回车键,此时程序就会运行并输出“Hello World”。输出完毕,立即退出程序,进入命令行等待状态,如图1.7所示。共三百五十八页图1.6 编译(biny)源程序HelloWorld共三百五十八页图1.7 运行(ynxng)HelloWorld应用程序共三百五十八页 这里用到的命令Javac和Java都是JDK软件包自带的。从JDK安装路径的bin目录下可以看到javac.exe,这是编译程序,源程序编译通过后就生成.class文件;而Java.exe就是载入类的运行程序(chngx),运行

13、时根据源程序(chngx)的指令要求产生正确的输出或结果。如果没有进行环境配置,直接编译或者运行Java源程序,系统会提示找不到这些命令,所以必须进行环境配置后再使用。共三百五十八页 【例1.2】小应用程序的例子。输出(shch)“Hello World!”,如图1.8所示。源程序代码如下:/程序文件名称为HelloApplet.javaimport java.awt.Graphics;import java.applet.Applet;public class HelloApplet extends Appletpublic void paint (Graphics g )g.drawStr

14、ing (Hello World!,50,25);共三百五十八页 小应用程序代码书写和编译完成后,无法独立运行,需要一个载体或者(huzh)容器。下面的HTML网页代码就是小应用程序载入的容器。HTML Test Page共三百五十八页HelloApplet will appear below in a Java enabled browser.共三百五十八页图1.8 Applet显示(xinsh)“Hello World!”共三百五十八页习 题1. 简述Java的特点。2. 简述Java的分类(fn li)情况。3. 进行Java环境的安装和配置。4. 编写应用程序,屏幕上输出“欢迎来到Ja

15、va世界!”。5. 编写Applet,输出“欢迎来到Java世界!”。共三百五十八页第二章:基本(jbn)数据类型共三百五十八页2.1 标识符、关键字和转义符 在Java语言中,标识符是赋予变量、类和方法等的名称。标识符由编程者自己指定,但需要遵循一定(ydng)的语法规范: (1) 标识符由字母、数字、下划线(_)、美元符号($)组成,但美元符号用得较少。 (2) 标识符从一个字母、下划线或美元符号开始。 (3) Java语言中,标识符大小写敏感,必须区别对待。 (4) 标识符没有最大长度的限制,但最好表达特定的意思。 (5) 标识符定义不能是关键字。共三百五十八页 关键字又称保留字,是指J

16、ava语言中自带的用于标志数据类型名或者程序构造名等的标识符,如public、double等。 转义符是指一些有特殊含义的、很难用一般方式表达的字符,如回车、换行等。所有的转义符以反斜线()开头,后面跟着一个字符来表示某个(mu )特定的转义符,如表2.1所示。共三百五十八页表2.1 转 义 符共三百五十八页2.2 数据类型、变量(binling)和常量2.2.1 数据类型 Java编程语言定义了八种基本的数据类型(见表2.2),共分为四类:整数(zhngsh)类(byte、short、int、long)、文本类(char)、浮点类(double、float)和逻辑类(boolean)。共三百

17、五十八页表2.2 Java的数据类型共三百五十八页1. 整数类(1) 采用三种进制十进制、八进制和十六进制。2 十进制值是2;077 首位的0表示这是一个八进制的数值;0 xBAAC 首位的0 x表示这是一个十六进制的数值。(2) 具有缺省int。(3) 用字母“L”和“l”定义(dngy)long。(4) 所有Java编程语言中的整数类型都是带符号的数字。共三百五十八页 2. 文本类 (1) 代表一个16 bit Unicode字符。 (2) 必须包含用单引号( )引用的文字。 (3) 使用下列(xili)符号: a一个字符。 t-一个制表符。 u? -一个特殊的Unicode字符,?应严格

18、使用四个十六进制数进行替换。共三百五十八页 3. 浮点类 默认为double类型,如果(rgu)一个数字包括小数点或指数部分,或者在数字后带有字母F或f(float)、D或d(double),则该数字为浮点数。共三百五十八页4. 逻辑类boolean数据类型有两种值:true和false。例如:boolean flag = true;上述(shngsh)语句声明变量flag为boolean 类型,它被赋予的值为true。共三百五十八页2.2.2 变量与常量 常量是指整个运行过程中不再发生变化的量,例如数学中的= 3.1415,在程序中需要设置成常量。而变量是指程序的运行过程中发生变化的量,通常

19、用来存储中间结果,或者输出临时值。 变量的声明(shngmng)也指变量的创建。执行变量声明(shngmng)语句时,系统根据变量的数据类型在内存中开辟相应的存储空间并赋予初始值。变量有一个作用范围,超出它声明(shngmng)语句所在的块就无效。共三百五十八页 下面看一个使用各种类型变量声明并改变的示例。程序中pi为常量,s1、i1、l1、ch1、f1、d1、b1为全局变量,可以在方法change中发生改变,然后在方法main中输出。而s2、i2、l2、ch2、f2、d2、b2是方法main的局部变量,它们的作用(zuyng)范围只局限于方法main中。 【例2.2】测试不同数据类型的变量,

20、程序输出如图2.2所示。源程序代码如下:/程序文件名称为SetVariable.javapublic class SetVariable/全局变量共三百五十八页static double pi = 3.141592654;/数学(shxu)常量static short s1;static int i1;static long l1;static char ch1;static float f1;static double d1;static boolean b1;public static void main(String args)共三百五十八页/局部变量short s2 = 35;int

21、i2 = -32;long l2 = 34555L;char ch2 = A;float f2 = 897.89F;double d2 = 34.345;boolean b2 = false;/输出(shch)常量System.out.println(数学常量pi = + pi); /输出局部变量共三百五十八页System.out.println(*局部变量*);System.out.println(短整型变量s2 = + s2);System.out.println(整型变量i2 = + i2);System.out.println(长整型变量l2 = + l2);System.out.pr

22、intln(字符变量ch2 = + ch2);System.out.println(浮点数类型f2 = + f2);System.out.println(双精度(jn d)型变量d2 = + d2);System.out.println(布尔型变量b2 = + b2); /调用方法修改全局变量的值共三百五十八页change();/输出全局变量的值System.out.println(*全局变量*);System.out.println(短整型变量s1 = + s1);System.out.println(整型变量i1 = + i1);System.out.println(长整型变量l1 = +

23、 l1);System.out.println(字符(z f)变量ch1 = + ch1);System.out.println(浮点数类型f1 = + f1);System.out.println(双精度型变量d1 = + d1);System.out.println(布尔型变量b1 = + b1);共三百五十八页 /方法(fngf):修改全局变量的值 public static void change() s1 = 125;i1 = 88;l1 = 987654321L;ch1 = B;f1 = 3.2590F;d1 = -1.04E-5;b1 = true; 共三百五十八页第三章:运算符

24、和表达式共三百五十八页2.3 运算符和表达式 Java常用的运算符分为五类:算术运算符、赋值运算符、关系运算符、布尔逻辑运算符、位运算符。位运算符除了简单(jindn)的按位操作外,还有移位操作。按位操作返回布尔值。 表达式是由常量、变量、对象、方法调用和操作符组成的式子。表达式必须符合一定的规范,才可被系统理解、编译和运行。表达式的值就是对表达式自身运算后得到的结果。 根据运算符的不同,表达式相应地分为以下几类:算术表达式、关系表达式、逻辑表达式、赋值表达式,这些都属于数值表达式。共三百五十八页2.3.1 算术运算符及算术表达式Java中常用的算术运算符如下(rxi):+加运算符-减运算符*

25、乘运算符/除运算符%取模运算(除运算的余数)+增量运算符 -减量运算符 共三百五十八页 【例2.3】测试运算符及表达式,程序输出如图2.3所示。源程序代码如下(rxi):/程序文件名称为NumberOper.javapublic class NumberOperpublic static void main(String args)/变量初始化int a = 30;int b = 20;/定义结果变量int r1,r2,r3,r4,r5,r6,r7,r8,r9;/计算结果r1 = a + b;共三百五十八页r2 = a-b;r3 = a * b;r4 = a / b;r5 = a % b;r6

26、 = a +;r7 = b-;r8 = + a;r9 = - b;/输出(shch)结果System.out.println(a = + a + b = + b); /a,b的值System.out.println(a+b = + r1);System.out.println(a-b = + r2);共三百五十八页System.out.println(a*b = + r3);System.out.println(a/b = + r4);System.out.println(a%b = + r5);System.out.println(a+ = + r6);System.out.println(

27、b- = + r7);System.out.println(+a = + r8);System.out.println(-b = + r9); 共三百五十八页2.3.2 关系运算符 关系运算符用于比较两个数据之间的大小关系,关系运算表达式返回(fnhu)布尔值,即“真”或“假”。Java中的常用关系运算符如下:= =等于! =不等于大于=大于等于 b;r4 = a = b;r6 = a b = + r3);System.out.println(a=b = + r5);System.out.println(a=b = + r6); 共三百五十八页2.3.3 布尔逻辑(lu j)运算符表2.3 布

28、尔运算符及规则(guz)共三百五十八页 图2.3为布尔逻辑运算符及其规则示例等。其中简洁与和简洁或的执行结果分别与非简洁与和非简洁或的执行结果是一致的,不同在于简洁与检测出符号(fho)左端的值为假时,不再判断符号(fho)右端的值,直接将运算结果置为假;而简洁或与非简洁或的不同在于简洁或检测出符号(fho)左端为真时,不再判断符号(fho)右端的值,直接将运算结果置为真。例如:Boolean a = false;Boolean b = true; a & b检测到a为假,则无需判断b的值,直接将值置为假;而b | a时检测到b为真,则无需判断a的值,直接将值置为真。共三百五十八页 【例2.5

29、】测试布尔表达式,程序输出结果如图2.5所示。源程序代码(di m)如下:/程序文件名称为TestLogic.javapublic class TestLogicpublic static void main(String args)/变量初始化boolean a = false;boolean b = true;/定义结果变量boolean r1,r2,r3,r4,r5,r6;/计算结果共三百五十八页r1 = !a;r2 = a & b;r3 = a | b;r4 = a b;r5 = a & b;r6 = a | b;/输出(shch)结果System.out.println(a = +

30、a + b = + b);System.out.println(!a = + r1); System.out.println(a&b = + r2);System.out.println(a|b = + r3);System.out.println(ab = + r4);System.out.println(a&b = + r5);System.out.println(a|b = + r6);共三百五十八页2.3.4 位运算符Java中的常用(chn yn)位运算符如下:位求反&按位与|按位或按位异或右移不带符号右移 右移运算符对应的表达式为xa,运算的结果是操作数x被2的a次方来除,左移运算

31、符对应的表达式为xa,运算的结果是操作数x乘以2的a次方。共三百五十八页 【例2.6】测试(csh)位运算符,程序输出结果如图2.6所示。源程序代码如下:/程序文件名称为TestBit.javapublic class TestBitpublic static void main(String args)/变量初始化int a = 36;int b = 2;/定义结果变量int r1,r2;共三百五十八页/计算结果r1 = a b;r2 = a b = + r1); System.out.println(a3)?5:3;则a的值为5。如果x = 2,则a的值为3。共三百五十八页 对象(duxi

32、ng)运算符(instanceof)用来判断一个对象是否属于某个指定的类或其子类的实例,如果是,返回真(true),否则返回假(false)。 例如: boolean b = userObject instanceof Applet用来判断userObject类是否是Applet类的实例。共三百五十八页2.3.7 优先级表2.5 运算符优先级共三百五十八页第四章: 流 程 控 制 流程控制分为三种基本结构:顺序结构、分支结构和循环结构。顺序结构是指命令行顺序执行(zhxng),这是最常见的一个格式;分支结构是一种选择结构,根据条件的值选择不同的执行(zhxng)流程,可以得到不同的结果。分支结

33、构包括单分支语句(if-else语句)和多分支语句(switch语句);循环结构是指对于一些重复执行的语句,用户指定条件或次数,由机器自动识别执行。循环结构包括次数循环语句(for语句)和条件循环语句(while语句)。共三百五十八页4.1 分支语句分支语句分为(fn wi)两类:单分支语句和多选语句。1. if-else语句if-else语句的基本格式为:if(布尔表达式)语句或块1;else语句或块2;共三百五十八页 其中: (1) 布尔表达式返回值为true或false。 (2) 如果为true,则执行(zhxng)语句或块1,执行完毕跳出if-else语句。 (3) 如果为false,

34、则跳过语句或块1,然后执行else下的语句或块2。共三百五十八页 测试if-else语句,如果x10,则输出x的值,并提示(tsh)结果正确,否则输出x= 10,提示结果不正确。程序输出结果如图2.7所示。源程序代码如下:/程序文件名称为TestIf.javapublic class TestIf/声明全局变量xstatic int x;public static void main(String args)x = 12;if(x10)共三百五十八页 System.out.println(x = + x + 结果正确(zhngqu);else System.out.println(x = 10

35、 + 结果不正确);change();System.out.println(修改x的值之后);if(x10)System.out.println(x = + x + 结果正确);elseSystem.out.println(x = 10 + 结果不正确);共三百五十八页/change方法(fngf):修改x的值public static void change()x = 5; 共三百五十八页2. switch语句switch语句的基本(jbn)格式为:switch(表达式1)case 表达式2: 语句或块2; break;case表达式3: 语句或块3; break;case 表达式4: 语句

36、或块4; break;default: 语句或块5; break;共三百五十八页其中:(1) 表达式1的值必须与整型兼容。(2) case分支要执行的程序语句(yj)。(3) 表达式2、3、4是可能出现的值。(4) 不同的case分支对应着不同的语句或块序列。 (5) break表示跳出这一分支。 共三百五十八页 测试switch语句,当x=1、2、3时,分别打印1、2、3,x不为这三个值时,打印x的值。程序(chngx)输出结果如图2.8所示。源程序代码如下:/程序文件名称为TestSwitch.javapublic class TestSwitchpublic static void ma

37、in(String args)/声明变量xint x;x = 12; 共三百五十八页System.out.println(x=12时打印的值);choose(x);x = 3;System.out.println(x=3时打印的值);choose(x);/choose方法(fngf):switch语句结构public static void choose(int x)switch(x) 共三百五十八页case 1:System.out.println(1);break;case 2:System.out.println(2);break;case 3:System.out.println(3)

38、;break;default:System.out.println(x); 共三百五十八页4.2 for循环语句for循环语句实现已知次数的循环,其基本格式(g shi)为:for(初始化表达式;测试表达式;步长)语句或块;共三百五十八页 其执行顺序如下: (1) 首先运行初始化表达式。 (2) 然后计算测试(csh)表达式,如果表达式为true,执行语句或块;如果表达式为false,退出for循环。 (3) 最后执行步长。 共三百五十八页 用for循环(xnhun)统计1100(包括100)之间数的总和。程序输出结果如图2.9所示。源程序代码如下:/程序文件名称为TestFor.javapu

39、blic class TestForpublic static void main(String args) int sum = 0; for(int i = 1; i=100; i+)sum += i; System.out.println(1到100(包括100)的数的总和为: + sum);共三百五十八页4.3 while循环语句 while循环语句实现受条件控制的循环,其基本格式为: while(布尔表达式) 语句或块; 当布尔表达式为true时,执行语句或块,否则(fuz)跳出while循环。共三百五十八页上面for循环(xnhun)语句的例子改为while语句后如下所示:int s

40、um = 0;int i = 1;while (i=100)sum += i; i+;System.out.println(1到100(包括100)的数的总和为: + sum);共三百五十八页4.4 do语句(yj)do语句实现受条件控制的循环,其基本格式为:do语句或块;while(布尔表达式)共三百五十八页 先执行语句或块,然后再判断(pndun)布尔表达式。与while语句不同,当布尔表达式一次都不为true时,while语句一开始判断就跳出循环,不执行语句或块,而在do语句中则要执行一次。上面那个例子改为do循环为: int sum = 0; int i = 1; do sum +=

41、i; i+; while (i=100); System.out.println(1到100(包括100)的数的总和为: + sum);共三百五十八页第五章:java的继承、多态、高级(goj)类特性和数组类是对客观事物的抽象描述,表示的一种模型、模式的总称,但并不是某个(mu )具体的事物。对象是类的实例,是具体的,可以修改,可以使用的。例如“人”表示是类,“张三”表示的是具体的个人,符合“人”这个概念,所以说“人”这个类的实例,即“人”这个类生成的对象。共三百五十八页类与对象(duxing)关系汽车(qch)设计图第一辆第二辆第三辆汽车类汽车类的实例共三百五十八页对象(duxing)的实现

42、类是通过(tnggu)对现实世界客观事物抽象而来,但这种抽象并不要求面面俱到的描述该实体。例如我们将现实中的电力磨面机抽象为java程序中的一个类过程如下:电力磨面机重量功率电动机可以磨面前三个特征属于磨面机静态方面的特征,我们将他们叫属性第四个特征属于磨面机所具有的行为,我们称之为方法(函数)共三百五十八页分别对以上磨面机的各个特征用JAVA语言的数据类型和方法给予(jy)描述如下:重量:float weight;功率:float power;电动机:Electromotor electromotorA;磨面:这是一个行为(xngwi),可以用JAVA中的方法加以描述,分析如下:磨面需要原料

43、小麦(对应方法中的形式参数),磨完后产生结果面粉(对应方法中的返回值)所以可以得到磨面这个行为的JAVA语言描述:Flour milling(wheat);分析到此,我们是不是得到了现实中所有(注意是“所有”!)磨面机都具有的基本特征,在JAVA中我们用类这种数据类型来表示,这个类就代表了所有磨面机的基本模式,但并不是一台具体的磨面机。注:电动机本身不是JAVA语言的固有数据类型,所以在java中依然是一个自定义的类!共三百五十八页类的定义类定义的基本(jbn)格式:修饰符 class 类名 extends 父类名 implements 接口名1,接口名2 属性的声明;方法的声明;下面我们试着

44、根据上面的类定义格式来定义一个磨面机类共三百五十八页Public class Millerfloat weight;float power;Electromotor electromotorA;flour milling(wheat w)flour f;磨面粉的过程;将磨出的面粉存储在变量f中;return f;这样我们就定义好了磨面机类,相当于设计好了一个磨面机的图纸了,以后凡是在程序中我们需要磨面粉的时候就用这个图纸去生成(shn chn)具体的磨面机(对象),然后调用它的milling方法就可以了。共三百五十八页程序数据(shj)和代码在计算机内部的表示通常我们说的程序,包含两部分数据和

45、代码,代码是程序的执行(zhxng)部分,数据为代码的执行(zhxng)提供数据来源,无论是数据还是代码都要占用存储空间,而且是分开存储的。共三百五十八页对象的生成当我们已知某个类(自定义的或者系统的),就可以利用该类来生成相应的对象(实例)了,这个(zh ge)过程和其他语言中的定义基本类型的变量既相似又有区别,例如:在C语言中定义一个基本整型变量的语法:Int a;在JAVA中生成一个磨面机类型的对象的语法:Miller m;m=new Miller();也可以:Miller m=new Miller();对象是按照类的模式生成的,他是类的实例,所以在计算机中要占用相应的存储空间,用来存储

46、类定义中的成员属性和成员方法。同一个类生成的不同对象要占用不同的存储空间这一步叫做对象(duxing)的定义这一步叫做对象的实现共三百五十八页abChar aChar ba0a1a2数组ab0b1b2数组bweightpowerelectromotorAmillerweightpowerelectromotorAmiller磨面机对象(duxing)a磨面机对象(duxing)b简单数据类型、数组、对象在计算机内存中的存储示意图共三百五十八页类的继承(jchng)类是客观事物的抽象概念,java中定义了一个类,也就是(jish)定义了一个数据类型,用以描述一类事物的特征和行为。现实中的事物的发

47、展变化都是遵循继承关系的,比如说生物的进化过程,从简单到复杂。面向对象中的类也是如此,一个类可以派生出多个子类,这个过程叫做继承。共三百五十八页继承可以达到共享代码(di m)的目的,大大减少程序员的代码(di m)编写量。继承的关键字:extends语法:class A extends B/子类A的内容子类和父类共三百五十八页覆盖(fgi)当我们定义一个子类继承(jchng)某个父类时,原则上子类继承(jchng)了父类一切特性,除非父类成员是保护的,同时也可以在子类中定义和父类同名的成员,当生成子类的对象时,只能看到子类的同名成员,父类中的同名成员被屏蔽了,这个现象较覆盖。总结:覆盖发生在

48、子类和父类之间,一定伴随着类的继承。共三百五十八页关键字public和private的区别;两者都是修饰词,说明成员函数和成员变量的作用范围,具体情况如下:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用 private表示私有,私有的意思就是(jish)除了class自己之外,任何人都不可以直接使用,即便是子女,朋友,都不可以使用,即私有财产不可侵犯。 共三百五十八页Object类Object类是java言语中所有类的根类,即所有的类(用户自定义和系统类)都直接或间接继承自object类关于object类需了解的成员方法:Public String toSt

49、ring()/获取当前对象的描述信息字符串Public boolean equals(object obj)/比较(bjio)两个对象是否为同一对象,是则返回true 否则返回false。给方法在String类中进行了重写,表示判断两个String对象的字符串是否相等。Protected Object clone()/对象克隆,返回该对象的复制,注意函数参数的值传递和应用传递的区别,还有该方法为保护方法,不能直接继承,所以不能用对象名直接调用该方法,要使用clone方法必须要求生成对象的类实现cloneable接口(接口在本章后面的内容)请看例子。Public final Class getC

50、lass()/获取某个对象所属类信息,返回class对象。(这个问题有点复杂,看一个例子获取一个对象的类名)共三百五十八页Class类Class 类是在Java语言中定义一个特定类的实现。一个类的定义包含成员变量,成员方法(fngf),还有这个类实现的接口,以及这个类的父类等。当一个对象被加载到内存时,系统会自动为它生成一个关联的Class类的对象,用于管理该对象的基本信息(对象所属的类,父类,修饰符,各成员变量名,成员方法名等),简而言之可以将Class类理解为管理类的类(有点别扭哦,请看例子:获取一个对象所属类的父类名)共三百五十八页String类Java中没有字符串基本数据类型,是通过三

51、个最终类(注意最终类不能被继承):String,StringBuffer和StringBuilder来完成。 其中String类表示的字符串长度不能改变,StringBuffer和StringBuilder表示的字符串的长度可以改变,前者支持(zhch)多线程,速度稍慢,后者不支持(zhch)多线程,速度稍快些。利用JOptionPane获取键盘输入(看课本例5.5)利用Scanner类获取键盘输入和文件输入。(看课本例5.6)共三百五十八页高级(goj)类特性Static关键字:static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,Java

52、语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名找到他们(t men)。因此,static修饰的对象可以在它的任何对象创建之前访问(请看例子)共三百五十八页Final 关键字用于修饰数据,方法,类。修饰数据时表示不能改变其值,即常量。修饰方法是表示该方法不能被覆盖。修饰类时表示该类不能被继承(jchng)(最终类)共三百五十八页枚举(mi j)类型枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制(xinzh)输入的范围,你只能够赋en

53、um里面规定的值下面就是一个典型枚举类型的定义:Java代码:publicenumColor RED,BLUE,BLACK,YELLOW,GREEN 共三百五十八页显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类。 而这些类都是类库中Enum类的子类(java.lang.Enum)。它们继承了这个Enum中的许多有用的方法(fngf)。我们对代码编译之后发现,编译器将enum类型单独编译成了一个字节码文件:Color.class共三百五十八页抽象类一般来说java中的类总是和现实世界某种事物相对应,但现实世界很多事物(名词)是没有实际的实体存在的,例如“车”这个概念就

54、没有实际的实体和它对应,他是一个抽象的概念。为了描述现实世界的这一特征,java中引入了抽象类,这种类不能实例化,只能通过它去派生出其他可以实例化的子类。鉴于抽象类以上的特点,一般来说它具备以下特征:它的成员方法(fngf)很多都是抽象方法(fngf)(用关键字abstract修饰,没有方法体,即只是一个方法的声明,并没有方法的实现)共三百五十八页3.2 接 口 Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。Java编程语言中禁止多继承,但可以通过一个类实现多个接

55、口。接口中可以定义大量的常量和方法,但其中的方法只是声明,没有具体的实现,使用接口的类自己实现这些方法(必须完全(wnqun)实现)。接口与类的不同在于: (1) 没有变量的声明,但可以定义常量。 (2) 只有方法的声明,没有方法的实现。 接口声明的基本格式如下: public interface 接口名 extends 接口列表共三百五十八页 测试接口(ji ku),定义接口(ji ku)文件Product.java,定义了两个常量,声明了一个方法。接口文件如下:/程序文件名Product.javapublic interface Cpustatic final int SCORE = 4;

56、static final int CACHE= 2; static final int FRE= 3.0; public void add();共三百五十八页第六章:异常(ychng)和断言程序逻辑几乎不可能考虑(kol)到所有可能出现的情况,一旦程序出现错误,如果不加以任何处理,轻则不能达到预期的设计效果,重则可能破坏系统(操作系统,数据库系统等)。程序错误大致可以分为两大类:编译错误和运行时错误,前者是程序还处于编译阶段有编译器进行语法检查时处理,后者则是程序在运行的过程中各种突发情况,所谓异常通常就是指程序的运行时错误。(请看课本例题6.1和6.2)共三百五十八页内部(nib)类定义在另

57、一个类内部的类叫内部类,又叫做类的嵌套。主要作用是将相关的类组织在一起,从而降低了命名空间的混乱。一个内部类可以定义在另一个类里,可以定义在函数里,甚至可以作为一个表达式的一部分。Java中的内部类共分为四种:静态(jngti)内部类static inner class 成员内部类member inner class局部内部类local inner class匿名内部类anonymous inner class共三百五十八页静态(jngti)内部类类定义时加上static关键字。不能和外部类有相同的名字。被编译成一个完全独立的.class文件,名称为OuterClass$InnerClass.

58、class的形式。只可以访问外部类的静态(jngti)成员和静态(jngti)方法,包括了私有的静态成员和方法。生成静态内部类对象的方式为:OuterClass.InnerClass inner = new OuterClass.InnerClass();共三百五十八页成员(chngyun)内部类成员内部类也是定义在另一个类中,但是定义时不用(byng)static修饰。成员内部类和静态内部类可以类比为非静态的成员变量和静态的成员变量。成员内部类就像一个实例变量。它可以访问它的外部类的所有成员变量和方法,不管是静态的还是非静态的都可以。在外部类里面创建成员内部类的实例:this.new Inn

59、erclass();在外部类之外创建内部类的实例:(new Outerclass().new Innerclass();在内部类里访问外部类的成员:Outerclass.this.member共三百五十八页局部(jb)内部类 局部内部类定义在方法中,比方法的范围还小。是内部类中最少用到的一种类型。像局部变量一样,不能被public, protected, private和static修饰。只能访问方法中定义的final类型的局部变量。局部内部类在方法中定义,所以(suy)只能在方法中使用,即只能在方法当中生成局部内部类的实例并且调用其方法。共三百五十八页匿名(nmng)内部类 匿名内部类就是没

60、有名字的局部内部类,不使用关键字class, extends, implements, 没有构造方法。匿名内部类隐式地继承了一个父类或者实现了一个接口。匿名内部类使用得比较多,通常是作为(zuwi)一个方法参数。共三百五十八页Java语言(yyn)对程序异常的定义 java将异常归纳为各种类型,如文件不存在,数组下表越界等等,每种类型都对应着一个异常类(当然用户也可以自己定义异常类)。当程序中某些地方出错时(此时发生的异常类型是已知的了),java运行时系统就会自动创建一个相应的异常类对象。Java创建异常对象后,就发送给Java程序,即抛出(po ch)异常(throwing an exce

温馨提示

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

评论

0/150

提交评论