Java面向对象程序设计ppt课件(完整版).ppt

上传人:可****阿 文档编号:72346652 上传时间:2023-02-10 格式:PPT 页数:622 大小:6.11MB
返回 下载 相关 举报
Java面向对象程序设计ppt课件(完整版).ppt_第1页
第1页 / 共622页
Java面向对象程序设计ppt课件(完整版).ppt_第2页
第2页 / 共622页
点击查看更多>>
资源描述

《Java面向对象程序设计ppt课件(完整版).ppt》由会员分享,可在线阅读,更多相关《Java面向对象程序设计ppt课件(完整版).ppt(622页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Java面向对象程序设计(第二版)第1章了解Java教学内容nJava的起源、发展和主要特点nJava的基本开发环境nJava应用程序的基本结构与组成元素n编辑、编译及运行Java应用程序的基本方法与过程nJava 小程序的组成与运行n类与对象的概念,面向对象的基本特性,面向对象程序设计的基本过程教学目标n了解Java的技术背景以及Internet的发展对Java的推动作用n理解平台无关性及可移植性的含义n掌握编写具有简单输出功能的Java 应用程序的方法n熟练JDK的安装以及编辑、编译与运行Java应用程序的方法n理解类、对象、属性、方法等面向对象的基本概念n了解面向封装、继承及多态等面向对

2、象的基本特性Java起源nOaknInternet和WWW的发展Java平台的构成nJava平台包括核心JVM以及Java APInJava平台的三种版本nJava SE允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。nJava EE是Sun公司针对Internet环境下企业级应用推出的一种全新概念的模型,比传统的互联网应用程序模型更有优势,适合于开发服务器端应用程序或者大型ERP系统等。Java EE也是一组规范集。nJava Me可以使用在各种各样的消费电子产品上,例如,智能卡、手机、PDA、电视机顶盒等方面。Java EE也提供了Java语言一贯的特性跨平

3、台和安全网络传输。随着3G及嵌入式芯片技术的发展,基于Java的移动式、嵌入式应用将会越来越广泛。Java的特点nJava是简单的n面向对象的n分布式的n解释型的n健壮的、安全的n结构中立的、可移植的n高效的、多线程的、动态的 Java程序开发环境 nJava开发工具包的来源n一个Java程序的开发要经过编辑、编译和运行三个过程。nJava程序的编辑可以使用任何一个文本编辑器,编译与运行则通过Sun公司提供的Java开发工具箱JDK(Java Development Toolkit)进行。nJDK 是一个简单的命令行工具集,包括软件库、编译Java源程序的编译器、执行字节码的解释器以及其他的一

4、些实用工具。nJDK环境变量设置 Java应用程序结构应用程序结构n一个Java 应用程序由类、对象与方法等若干部分组成。Java应用程序开发过程应用程序开发过程n一个Java程序的开发过流程如图所示,主要包括:编辑、编译和运行。n这个过程是反复的,不管是在创建源代码,还是在编译或者运行时,只要有错误,就必须通过修改程序源代码以纠正错误,然后再重新编译或者运行。Java applet程序举例 n这个程序的功能是在浏览器中显示字符信息“This is a simple applet!”。但是它不能直接运行,需要将它编译成字节码文件,再通过HTML文档从浏览器中访问。例例1.5 一个简单的appl

5、et。/文件名SimpleApplet.javaimport java.awt.Graphics;public class SimpleApplet extends java.applet.Applet public void paint(Graphics g)g.drawString(“This is a simple applet!”,15,15);Java applet的开发过程的开发过程n创建并编译appletn创建调用applet的HTML文件 例例1.6 一个调用applet的HTML文档,文档名为appletExample.html。The example of Java app

6、let applet程序组成 nimport语句n对象n方法paint()和类Graphicsn类继承和关键字extends 面向对象程序设计基础面向对象程序设计基础n对象代表现实世界中可以明确标识的任何事物。现实世界中充满了对象,例如一台电视机、一张桌子或者一扇门等都是对象。对于每一个对象,通常需要考虑两个问题:是什么?能做什么?n有两个术语可以描述:属性和行为。属性决定了对象是什么,描述了对象的所有可能的状态;行为决定了对象能够做什么,是对象具备的外部服务。n在具体的程序设计中,对象的属性是一些数据域的集合,行为则是方法的集合。也就是说,对象是数据及其处理方法的一个封装。面向对象程序设计基

7、础(续)面向对象程序设计基础(续)n既然一切皆是对象,那么对象就太多了。可以将具有某些共同特征的对象当作一类来看待。换言之,同一类的对象有相同的特性,将相同的特性抽取出来就是一个类,类的实例就是对象。面向对象特性n封装n所有的对象都需要被封装起来。封装是一种将对象的数据及其处理方法结合起来,使其不被外界干扰滥用的程序设计机制,是对象保护并管理自身信息的一种方式。对象通常都是自治的,不会受到外部其他对象的干扰。通过封装,设计人员可以修改对象的内部结构,不用考虑会对编程人员造成影响。改变对象状态的唯一途径是借助于该对象的方法。n继承n通过已经存在的一个类定义另一个类,或者说由父类定义子类,就是指继

8、承。当实现继承时,子类可以获得父类的属性和方法。继承是软件复用的一种形式,可以提高编程效率,降低编程的复杂性。面向对象特性(续)n多态n多态是指一种允许使用一个接口(一种特殊的类)来访问一类动作的特性。或者说,利用它,开发人员可以在一段时间内以一致的方式引用多个相关的对象。多态性常描述为“单接口,多方法”,这种特性也减少了编程的复杂性。面向对象程序设计过程nJava语言是一种面向对象的程序设计语言(Object Oriented Programming,简称OOP)。OOP的基本思想是:用类似于人的思维方式对软件系统要模拟的客观实体进行抽象,再对客观实体进行结构模拟和功能模拟,以使设计出来的软

9、件尽可能直接地描述客观实体,从而构造模块化的、可重用的、维护方便的软件。n程序设计的过程实际上就是软件开发的过程。根据软件工程的基本思想,软件开发过程包括分析、设计、编写代码、测试和运行等5个阶段,这5个阶段又被称为软件生命周期。面向对象程序设计过程 n分析n需求分析阶段的任务是理解用户需求,设计解决方案,对方案进行可行性分析。根据软件工程规范,本阶段的成果是描述程序功能的需求规范。程序功能要以可测试的方式描述,以便于测试阶段根据需求规范对软件进行测试。在实际工作中,需求分析是一项复杂又相当重要的工作,对分析人员的要求也比较高,要求他们既要有理解用户业务的能力,又要有软件设计的能力。面向对象程

10、序设计过程(续)n设计n设计阶段根据需求规范进行程序的总体设计。在面向对象程序设计中,本阶段要明确程序中需要用到哪些类与对象,给出这些类及对象的定义。n对于程序设计的学习者来说,需求分析阶段的任务并不复杂,设计类与对象成了整个程序设计过程中的核心任务。一个类描述的是某一类实体所具有的共性,但针对于每一个个体(对象)来说,相同的属性可能具有不同的值。n例如,一个班级中的每一个学生的学号都不相同。利用软件系统来描述和解决现实世界中的问题时,通常涉及到每一个对象。因此,面向对象程序设计就是用类与对象进行程序设计。在程序设计时,一般先定义类,再由类创建对象。面向对象程序设计过程(续)n编写代码n这个阶

11、段用代码将设计表示出来或者说实现设计。相对而言,这个阶段的任务是整个软件生命周期中比较简单的。n测试n这一阶段的工作是设计多组不同的输入、试运行程序,尽可能多的发现程序中的错误,并检验程序是否符合需求规范。测试也有一定的方法与技术。面向对象的程序测试通常分为两类,单元测试与综合测试。n运行 面向对象程序设计过程(续)n运行n运行阶段就是软件投入实际使用的过程。在这一阶段,还存在着软件维护的问题。一般来说,软件投入运行后,设计阶段未能发现的问题会逐步暴露,客户需求也在不断变化,所有这些都要求设计人员不得不对软件进行修改以使其更加符合用户需求,更加完善。n更新软件维护所花费的成本在整个软件设计成本

12、中所占的比例相当高,有时甚至达到70%以上。n可见,程序设计是一项复杂的工作,需要大量的实践。n对于面向对象的程序设计来说,由于其程序是由对象组成的,程序设计的基本工作首先是设计类与对象,具体的编程工作则是声明类、构造方法、声明并创建对象,通过发送消息组织对象之间的协调等。nJava作为一种主流的软件开发工具,代表了一种新的软件开发思想、模型和技术。同时,Java也对Internet产生了积极而深远的影响。原因很简单,网络程序是动态的,由此产生了安全及可移植方面的问题。Java解决了这些问题,它提供了一系列开发Internet应用的技术,包括Java applet、JSP以及基于Java的We

13、b Services开发技术等。Java面向对象程序设计(第二版)第2章 基本数据类型与运算 引例/文件名Jpro2_1.javaimport java.io.*;/引入类public class Jpro2_1 /定义主类 public static void main(String args)/定义main()方法int pro_score,eng_score,math_score;/声明变量float average_score;pro_score=89;/输入三门课程成绩eng_score=86;math_score=93;average_score=(pro_score+eng_sc

14、ore+math_score)/3;/计算平均成绩 System.out.println(“Score of three coursesis+pro_score+“,”+eng_score+“,”+math_score);/标准输出System.out.println(The average score is:+average_score);标识符nJava语言对标识符还有如下规定:n长度不限,但不宜过长。一般遵循“见名知义”原则,即为标识符取一个能代表其意义的名称。n区分字母的大小写。如Student和student是两个不同的标识符。n不能是关键字。关键字n根据它们的意义分为以下几种类型:

15、n数据类型:boolean,int,long,short,byte,float,double,char,class,interfacen流程控制:if,else,do,while,for,switch,case,default,break,continue,return,try,catch,finallyn修饰符:public,protected,private,final,void,static,strictfp,abstract,transient,synchronized,volatile,nativen动作:package,import,throw,throws,extends,imp

16、lements,this,Super,instanceof,new n保留字:true,false,null,goto,constJava基本数据类型 n基本数据类型包括数值型、字符型及布尔型。n复杂数据类型包括类、接口和数组等,也称为引用类型,即通过对象的创建,获得引用类型的值。教学内容nJava中的基本数据类型及其应用n定义Java标识符的基本规则nJava中常量与变量的含义,定义与使用它们的基本方法nJava中的运算符、常量、变量及函数的含义n通过运算符构成符合Java规范的表达式的基本方法n赋值语句的使用以及数据转换与实现机制教学目标n根据Java规范在程序中正确定义并使用各种标识符n

17、理解3种基本数据类型的含义并能正确地识别与应用n根据处理对象的特征正确定义变量类型n在程序中给变量赋值n通过常量、变量、函数及运算符构造符合Java规范的表达式 数值型n整数和浮点数两种类型,整数不带小数点,浮点数含有小数点。整数有byte(字节型)、short(短整型)、int(整型)及long(长整型)等4种,浮点型数据有float(单精度浮点型)和double(双精度浮点型)两种。字符型nJava中的字符型数据用char表示,它的值用16个bit来存储,取值范围是065535。它表示的是Unicode码表所定义的国际化字符集中所收集的所有字符,根据Unicode编码,可以比较其大小,类似

18、于ASCII码的比较。与其他语言一样,Java也用单引号来表示字符型数据。如A、c、#、&与9等等。例如,nchar grade1=A,grade2=B;n 显然grade1 和grade2可以比较大小,A的编码值小B的编码值,所以grade1小于grade2。布尔型n布尔型(boolean)是一种表示逻辑值的简单数据类型。它的取值只能是常量true或false这两个值中的一个,在存储器中占8个bit。通常用于程序中的一些逻辑判断从而对程序的运行进行控制。例如,根据成绩的及格线60分,判断考试是否通过。int grade;boolean passOrNo;if(grade=60)passOrN

19、o=true;else passOrNo=false;常量n常量(constant),就是在程序运行过程中其值不会被改变的量,就象我们在数学中常用到的=3.14。常量也叫常数,也被称为“字面量”。n在Java语言中,按照数据的特征,可将常量分为整型、浮点型、字符型、字符串型与布尔型等5种类型。n字符型常量是指Unicode字符集中的所有单个字符,包括可以打印的字符和不可打印的控制字符,它的表示形式有四种:n以单引号括起来的单个字符,例如,A、h、*、1。n以单引号括起来的加三位八进制数,形式为ddd,其中d可以是07中的任一个数,例如,141表示字符a。其中ddd的取值范围只能在八进制数的00

20、0777之间,因而它不能表示Unicode字符集中的全部字符。n以单引号括起来的u加四位十六进制数,例如,u0061表示字符a。这种表示方法的取值范围与char型数据相同,因而可以表示Unicode字符集中的所有字符。n对于那些不能被直接包括的字符以及一些控制字符,Java定义了若干转义序列。如代表,n代表换行等。如表2-1所示的是Java中的一些字符转义序列。变量n变量(variables)是Java程序中的基本存储单元,是在程序运行过程中其值可以改变的量。一个变量蕴含有三个含义:n(1)变量的名称。变量的名称简称变量名,变量名是用户自己定义的标识符,它表明了变量的存在和唯一性;n(2)变量

21、的属性。即变量的数据类型,包括简单数据类型和复合数据类型;n(3)变量的初值。变量的值是指存放在变量名所标记的存储单元中的数据。n变量的声明方法是 n数据类型 变量名1=初值1,变量名2=初值2;变量定义和赋值示例n一个变量必须经过声明、赋值之后才能被使用;类型相同的几个变量可以在同一个语句中被声明及被赋初值,相互之间应用“,”作间隔。/文件名Jpro2_2.java:public class Jpro2_2 public static void main(String args)short b=050;int c=0 xA3;long d=2.0E+10;byte e=129;float f

22、f=1.234;double dd=34.56d;System.out.println(短整型变量的值:b=+b);System.out.println(整型变量的值:c=+c);System.out.println(长整型变量的值:d=+d);System.out.println(字节型变量的值:e=+e);System.out.println(单精度度浮点型的值:ff=+ff);System.out.println(双精度浮点型的值:dd=+dd);类型转换nJava是强类型语言,其中的每个数据都有特定的数据类型。Java中所有的数值传递都必须进行类型相容性检查以保证类型是兼容的。任何类型

23、不匹配都将被报告为错误。因此,我们在进行程序设计时经常要对一些类型不同的数据进行类型转换。Java的数据类型转换有两种情况:表达式中的自动转换和强制转换。n1.表达式中的自动转换表达式中的自动转换njava表达式中,当涉及到两个不同类型的数据进行运算时,系统会自动把两个不相同的类型数据转换成相同的类型再进行运算。这种转换是在程序运行过程中不需人为干预而自动进行的,但转换是有条件的,即两种数据类型必须是兼容的,规则是把表达式中取值范围小的类型数据转换成另一取值范围大数据的类型。自动转换源数据类型目标数据类型byteshort、int、long、float、doubleshortint、long、

24、float、doublecharint、long、float、doubleintlong、float、doublelongfloat、doublefloatdoublen可自动进行转换的数据类型如表所示。强制类型转换n对于类型不一致数据,在写表达式时不能进行自动类型转换,这时就要执行强制类型转换。n强制类型转换的一般格式为:(目标数据类型)被转换数据n被转换数据可以是变量或表达式等,如要把double型变量money的值转换成int型,形式为:(int)money。强制转换示例n例2.4 从键盘读入一个字符,并输出这个字符。/文件名Jpro2_4.javaimport java.io.*;pu

25、blic class Jpro2_4 public static void main(String args)char ch=;System.out.println(Input a interger or character:);try ch=(char)System.in.read();/从键盘中读入一个字符 catch(IOException e)System.out.println(The input is+ch+);运算符和表达式n一个运算符,a、b、c本身也是一个表达式。一个常量或一个变量是最简单的表达式。n一般的表达式是指由数据和运算符连接在一起的符合Java语法规则的式子。n这里

26、的数据是常量或变量,表达式中数据的连接符+、-、*、=及number2;b4=b1&(b2=number1number12);/b1为false,b4值未被改变 f1=b4|(b3=number1number12);/b4值被改变 System.out.println(number1=+number1);System.out.println(number2=+number2);System.out.println(number1number2 result is+b1);System.out.println(b1&(b2=number1b)?a:(cd)?c:dn其中a=5,b=8,c=1,d

27、=9。根据右结合性,应先计算(cd)?c:d。因为19为false,故取d=9为该表达式的结果。再计算(ab)?a:d,则最终结果为9。位运算符nJava中,可以使用位运算直接对整数类型和字符类型的数据的位进行操作。Java中的位运算符如表2-5所示。赋值运算符和赋值表达式赋值运算符和赋值表达式n赋值运算符两边数据类型可以不相同但必须相容,当数据类型不相同时:若右边数据取范围小于左边数据,则会自动转换;反之,则必须强制转换。n扩展赋值运算符的使用不仅可以使程序表达简练,而且可以提高程序的编译速度。运算符优先级运算符优先级n对于Java语言中的一个表达式,如例2.6中的几个表达式,包含了多个运算

28、符,哪个运算符先运算哪个后运算,与数学中的运算规则类似,也要有规则,即设置运算符的优先级。Java语言运算符的运算级别共分为15级,其中1级的优先级最高,15级最低,参看教材表2-7所示。n例如,计算下面表达式的值。nint a=3,b=8,c;nc=a+b;n上述第二条语句被执行后,变量a、b、c的值分别是多少呢?如果表达式被理解为c=a+(+b),那么,a=3、b=9、c=12。其实结果并不是这样,而是a=4、b=8、c=11。这是因为运算符+作为“先用后增”的优先级高于作为“先增后用”运算符的优先级。n建议初学者在写表达式时多使用括号,这样既能防止引起混乱,又方便别人阅读你的程序代码。示

29、例n例2.7 判断2006年是否闰年。n/文件名Jpro2_7.javapublic class Jpro2_7 public static void main(String args)int year=2006;boolean t;t=year%400=0|year%4=0&year%100!=0;System.out.println(year+is intercalary year=+t);n运行结果:2006 is intercalary year=falsen注意:n语句t=year%400=0|year%4=0&year%100!=0;总体是一个赋值运算表达式,右边部分是逻辑表达式,

30、其中包含算术运算、关系运算和逻辑运算。n本程序每次运行只能判断一个年份是否为闰年,每判断一个年份,需要修改程序中的int year=2006;因此很不方便判定多个年份是否为闰年。n如果采用从命令行接收数据的方法,将大大改善程序。添加语句:year=Integer.parseInt(args0);实例1n例2.8 请判断一个三位数是否为水仙花数。水仙花数是指一个 n 位数(n3),它的每个位上的数字的 n 次幂之和等于它本身。(例如:13+53+33=153)n分析:n采用自顶向下、逐步求精的方法,先给出总的框架,再分析问题,然后逐步细化。n1总体步骤n(1)输入一个三位数n;n(2)分别求出个

31、、十、百的三个位上的数,并分别对它们计算三次幂;n(3)将这三个幂相加,判断是否与n相等。n2逐步细化及分析n(1)定义一个正整数,保存在一个整型变量s中;n(2)这一步是数据处理过程,要求完成的任务较多。根据数学运算方便,从高位开始,先分别求出三个位上的数,再进行相加。百位=s/100,十位=(s-百位*100)/10,个位=s%10,和=百位*百位*百位+百位*百位*百位+个位*个位*个位n(3)第二步计算的和与n相等,如果相等,输出是水仙花数,否则输出不是。程序代码n/文件名Jpro2_8.javaimport javax.swing.JOptionPane;public class J

32、pro2_8 public static void main(String args)int hNumber,tNumber,pNumber;double add;String intString=JOptionPane.showInputDialog(null,请输入一个整数:,例2.8演示,JOptionPane.QUESTION_MESSAGE);int number=Integer.parseInt(intString);hNumber=number/100;tNumber=(number-hNumber*100)/10;pNumber=number%10;add=Math.pow(h

33、Number,3)+Math.pow(tNumber,3)+Math.pow(pNumber,3);System.out.println(百位数是:+hNumber+t十位数是:+tNumber);System.out.println(个位数是:+pNumber+t各位数的三次幂的和是:+add);if(add=number)System.out.println(这个数+number+是水仙花数!);else System.out.println(这个数+number+不是水仙花数!);实例2n例2.9 从键盘输入一个字符,如果该字符是英文字母,则进行大小写转换。也就是说,如果输入的是大写字母

34、则输出其小写字母,反之则输出大写字母。n分析:n采用自顶向下、逐步求精的方法,先给出总的框架,再分析问题,然后逐步细化。n1总体步骤n(1)输入一个字符c;n(2)判断该字符是否为英文字母;n(3)将该字母进行大小写转换并输出。n2逐步细化及分析n(1)定义两个字符变量c、s,分别保存原字符和转换后的字符。定义一个short型变量k定义字母A与a在Unicode中的位置差。注意:这里的k也可定义为int型变量,但在后面给字符s赋值时需进行强制转换类型;n(2)先从键盘上读入一个字符,判断该字符是否为英文字母。n(3)若该字符是英文字母,再判断该字母是大写字母还是小写字母。然后用该字母加或减其大

35、小写字母在Unicode中位置差的方法来实现转换。注:大、小写字母在Unicode中均是按顺序排列的,且大写在前、小写在后,所以可以用a-A来表示每个大小写字母之间的位置差。程序代码n/文件名Jpro2_9.javaimport java.io.*;public class Jpro2_9 public static void main(String args)char c=,s=;short k=a-A;/k为大小写字母在Unicode中的排位差 System.out.print(Please enter a character:);try c=(char)System.in.read();

36、catch(IOException e);if(c=A&c=a&c=A&c=a&c=A&c=a&c=z 是一个逻辑表达式,用来判断c中存放的字符是否为英文字母。在此表达式中,关系运算符优先级大于逻辑运算符,同时逻辑运算符“&”优先于运算符“|”,所以该表达式可以判定c的值是否在字母“A”到“Z”或“a”到“z”之间,也就是说c中存放的是否为英文字母。如果是英文字母,则输出,否则输出 Its not a letter!。Java面向对象程序设计(第二版)第3章 类与对象教学内容n类和对象的概念n类的编写方法和对象的创建n类的成员变量的定义n类的成员方法的定义n包的概念n访问权限n内部类及泛型类教

37、学目标n理解类和对象的基本概念n掌握类和对象的创建与应用n理解方法和构造方法的概念n掌握方法的声明和调用n理解包的概念n掌握类及其成员访问权限控制n理解内部类的基本概念n编写简单的面向对象程序3.1引例例例3.1 用面向对象的思想来设计一个简单的程序,求一个矩形的周长和面积。分析:以面向对象的程序设计方式来思考这一问题,我们可以通过以下几步来解决:1用一个合适的名字(如Rectangle)来标识我们要分析的客观实体(矩形);2分析客观实体的共有特征:长和宽,用length和width两个属性对其进行描述;3分析客观实体的共有功能,用pritmeter()和area()两个方法来实现其功能;4设

38、计矩形类和一个测试类;5在测试类中,用矩形类产生一个矩形对象,并计算其周长和面积。程序代码如文件Jpro3_1.java3.2类n面向对象程序设计的基本思想是:仿照人的思维方式对软件系统要模拟的客观实体进行抽象,再对客观实体进行结构模拟和功能模拟,以便设计出来的软件尽可能直接地描述客观实体,从而构造模块化的、可重用的、维护方便的软件。n如果我们把客观世界中的一个特定种类的实体放在一起,并抽取他们身上共性加以描述,这就得到了软件系统中的类。因此,通常从下面三个方面来描述一个类:有一个名字来唯一标识它所描述的客观实体;有一组属性来描述客观实体的共有特征;有一组方法来实现客观实体的共有行为。n类是组

39、成Java程序的基本要素。类封装了一类对象的属性和方法。类是用来定义对象的模板,当使用一个类创建了一个对象时,我们也说给出了这个类的一个实例。3.2类(续)1.类的声明Java语句中类的定义通常包含两个部分:类声明和类体。其基本格式如下:class 类名 类体的内容3.2类(续)2.类体的构成定义类的目的是为了描述一类事物共有的属性和功能,即将数据和对数据的操作封装在一起,这一过程由类体来实现。类体通常有两种类型的成员:成员变量通过变量声明定义,来描述类创建的对象的属性。成员方法通过方法的声明定义,来描述类创建对象的功能。3.2类(续)3.成员变量的定义定义成员变量最简单的格式为:类型 变量名

40、1,变量名2,如果我们把变量名前的所有关键字称为该变量的修饰符,那么变量的类型修饰符是必须有的。它决定该变量在内存中分配空间的大小。成员变量可以是简单类型,如byte、int、long、boolean、float、double;也可以是数组、字符串或类等引用类型。3.2类(续)4.成员变量的初始化有三种途径来解决这个问题:在定义成员变量时赋初值;在类中定义成员方法给成员变量赋值;利用构造方法给成员变量赋初值。3.2类(续)4.成员方法在Java中,方法只能作为类的成员,也称为成员方法。方法操作类所定义的数据,以及提供对数据的访问的代码。大多数情况下,程序都是通过类的方法与其他类的实例进行交互的

41、。方法包括方法声明和方法体。创建成员方法最简单的格式为:返回值类型方法名(参数列表)方法体3.2类(续)5.构造方法构造方法是一种特殊方法,它的名字必须与它所在类的名字完全相同,并且不返回任何数据类型。Java程序中的每个类允许定义若干个构造方法,但这些构造方法的参数必须不同。每个类都有一个默认的构造方法(它没有任何参数),如果类没有重新定义构造方法,则创建对象时系统自动调用默认的构造方法。否则,创建对象时调用自定义的构造方法。在例3.1中的Rectangle类中,在定义成员变量的同时给变量赋了初值,这就意味着用此类创建的任何矩形对象,其初始的长和宽都是一样的,如果我们希望每次能得到长和宽都不

42、一样的矩形对象,又该如何来设计呢?请看下面的程序:class Rectangle private float length;private float width;public Rectangle()length=5.5f;width=3.5f;public Rectangle(float x,float y)length=x;width=y;3.2类(续)6.main()方法main()方法的定义格式如下:public static void main(String args)public修饰符说明main()方法可以为所有类访问。static修饰符表明main()方法是静态方法。main(

43、)方法用于启动Java应用程序,因为是用static定义的,当应用程序启动后,实际上系统中并不存在任何对象,可以直接调用。因此,main()方法的主要工作就是创建启动程序所需的对象。它的返回值类型为void,即无实际返回值。args是形式参数。3.3对象 对象(object)是以类作为“模板”创建的,类是一种复杂数据类型,是对象定义的前提。类是具有共同特性的实体抽象,而对象又是现实世界中实体的表现。对象是类的实例化,对象和实例(instance)两个词语通常可以互换。当然,实例也可理解为类的具体实现。3.3对象(续)1.对象的创建对象的创建过程实际上就是类的实例化过程。创建对象须使用操作符ne

44、w,其格式可以有两种:(1)类名 对象名=new 类名(参数1,参数2,);如:Rectangle r1=new Rectangle(5.5f,3.5f);(2)类名 对象名;对象名=new 类名(参数1,参数2,);如:Rectangle r1;r1=new Rectangle(5.5f,3.5f);3.3对象(续)2.对象的使用(1)使用对象的成员变量和成员方法:对象不仅可以操作自己的成员变量来改变状态,而且还可以使用类中的方法,对象通过这些方法产生一定的行为。对象通过运算符“.”来引用自己的成员。如例3.1中,main()方法中的语句:r1.length=5.5f;r1.width=3.

45、5f;double zc=r1.perimeter();System.out.println(矩形的周长是:+zc);System.out.println(矩形的面积是:+r1.area();在上面的程序中,当方法有返回值时,可以将返回值赋给相同类型的变量,也可以直接输出返回值。3.3对象(续)(2)对象间的赋值:相同类型的变量可以互相赋值。如果两个对象有相同的值,那么它们就具有相同的实体,即指向同一个内存空间。如以下语句:Rectangle r1=new Rectangle(5.5f,3.5f);Rectangle r2=new Rectangle(2.4f,3.2f);r1=r2;执行赋值

46、语句r1=r2后,r1和r2引用的实体就一样了,即r1和r2指向同一个存储空间,r1原先所引用的存储空间失去了引用对象,变成了一块垃圾内存,此时r1和r2的成员完全相同,其值也相同。3.3对象(续)(3)把对象作为方法的参数:对象也可以像变量一样,作为方法的参数使用。例例3.2 分别定义两个类:点类和圆类,将点类对象作为圆类的成员变量,并编写测试类进行功能测试。文件名Jpro3_2.java3.3对象(续)3.垃圾对象的回收当对象被创建时,就会在Java虚拟机的堆区中拥有一块内存,在Java虚拟机的生命周期中,Java程序会陆续地创建多个对象,假如所有的对象都永久占有内存,那么内存有可能很快被

47、消耗,引发内存空间不足。因此,必须采取一种措施及时回收那些无用对象占用的内存,以保证内存可以被重复利用。Java虚拟机提供了一个系统级的垃圾回收器线程,它负责自动回收那些无用对象所占用的内存,这种内存回收的过程被称为垃圾回收。3.4成员变量1.实例变量和类变量 类有两种不同类型的成员变量:实例变量和类变量。类变量又称为静态变量。用关键字static修饰的成员变量称为类变量,而没有用关键字static修饰的成员变量称为实例变量。具体来说,实例变量和类变量的主要区别为:在内存分配的空间上。不同对象的同名实例变量分配不同的内存空间,变量之间的取值互不影响;不同对象的同名类变量分配相同的内存空间,也就

48、是说多个对象共享类变量,改变其中一个对象的类变量的值会影响其它对象中相应的类变量的值。在内存分配的时间上。当类的字节码文件被加载到内存时,类变量就分配了相应的内存空间;实例变量是当类的对象创建时才会被分配内存。访问方式不同。实例变量必须用对象名访问;类变量可以用类名访问,也可以用对象名访问。例3.3 编写一个矩形类,用类变量统计所创建的矩形对象的个数。文件名Jpro3_3.java3.4成员变量(续)2 常量如果一个类的成员变量前加如果一个类的成员变量前加final修饰符,该成员变量就为常量,修饰符,该成员变量就为常量,常量的名字习惯用大写字母表示,如常量的名字习惯用大写字母表示,如final

49、 double PI=3.14159;常量不占用内存,这意味着在声明常量时,必须初始化。对象常量不占用内存,这意味着在声明常量时,必须初始化。对象可以使用常量,但不能更改它的值。可以使用常量,但不能更改它的值。例例3.4 已知圆的半径,求圆的面积。已知圆的半径,求圆的面积。文件名文件名Jpro3_4.java3.5成员方法1.实例方法和类方法 类有两种不同类型的成员方法:实例方法和类方法。类方法又称为静态方法。用关键字static修饰的成员方法称为类方法,而没有用关键字static修饰的成员方法称为实例方法。具体来说,实例方法和类方法的主要区别为:在内存分配的时间上。当类的字节码文件被加载到内

50、存时,类方法就分配了相应的入口地址;实例方法是当类的对象创建时才会被分配入口地址。访问方式不同。实例方法必须用对象名访问;类方法一般用类名访问,也可用对象名访问。操作的对象不同。类方法只能操作类变量,不能操作实例变量;而实例方法既可以操作类变量也可能操作实例变量。另外,实例方法中可以调用实例方法和类方法,而类方法中只能调用类方法,不能调用实例方法。例3.5 定义静态方法访问静态变量,文件名Jpro3_5.java3.5成员方法(续)2.方法中的参数传递(1)基本数据类型参数的传值基本数据类型参数的传值对于基本数据类型的参数,实参数据类型的级别不能高于形参对于基本数据类型的参数,实参数据类型的级

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com