Java程序设计基础与实践完整版课件全套ppt整本书电子讲义全书ppt电子课件最全教学教程.ppt
Java程序设计基础与实践 第第1章章Java环境的安装、配置与环境的安装、配置与运行运行本章导读Java是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java的诞生是对传统计算机模式的挑战,对计算机软件开发和软件产业都产生了深远的影响。Java一经推出就赢得了前所未有的成功,从2001年至今,Java语言一直是世界上应用最广泛的编程语言,因此现在有越来越多的工作者、学习者正努力进入Java领域或将要努力进入Java领域,因此,学习Java语言很有必要。“工欲善其事,必先利其器”,搭建开发环境是学习语言的第一步,环境好搭建后,熟悉开发环境及简单程序的解读就是学习语言的第二步了。本章要点Java简介Java的特点Java运行环境的安装与配置Java程序结构Java程序的运行机制和垃圾回收机制Java程序的编写、编译和运行1.1基础知识1.1.1Java简介美国硅谷有一句行话,每10年15年有一次轮回。最近的一次轮回就是从Java开始。Java的产生Sun的Java语言开发小组成立于1991年,其目的是开拓消费类电子产品市场,Sun内部人员把这个项目称为Green,Green小组的领导人是JamesGosling,是一位非常杰出的程序员。在研究开发过程中,Gosling深刻体会到消费类电子产品和工作站产品在开发哲学上的差异。消费类电子产品要求可靠性高、费用低、标准化、使用简单,用户并不关心CPU的型号,也不欣赏专用昂贵的RISC处理器。为了使整个系统与平台无关,Gosling首先从改写C+编译器着手。但是Gosling在改写过程中感到仅C+是无法满足需要的,于是在1991年6月份开始准备开发一个新的语言,那么给它起一个什么名字呢?Gosling回首向窗外望去,看见一棵老橡树,于是建一个目录叫Oak,这就是Java语言的前身。Java的产生Gosling在开始写Oak时,并不局限于扩充语言机制本身,更注重于语言所运行的软硬件环境。他要建立一个系统,这个系统运行于一个巨大的、分布的、异构的网格环境中,完成各电子设备之间的通信与协同工作。Gosling在设计中采用了虚机器码(VirtualMachineCode)方式,即Oak语言编译后产生的是虚拟机,虚拟机运行在一个解释器上,每一个操作系统均有一个解释器,这样一来,Oak就成了与平台无关语言。当Naughton加入该小组后,整个工作进展神速。经过17个月的奋战,整个系统胜利完成。它是由一个操作系统、一种语言(Java)、一个用户界面、一个新的硬件平台、三块专用芯片构成的。到了1994年,WWW已如火如荼地发展起来。Gosling意识到WWW需要一个中性的浏览器,它不依赖于任何硬件平台和软件平台,它应是一种实时性较高、可靠安全、有交互功能的浏览器。于是Gosling决定用Oak开发一个新的Web浏览器。Java的产生这项工作由Naughton和JonathanPayne负责,到1994年秋天,完成了WebRunner的开发工作。WebRunner是HotJava的前身,这个原型系统展示了Java可能带来的广阔市场前景。WebRunner改名为HotJava,并于1995年5月23日发表后,在产业界引起了巨大的轰动,Java的地位也随之而得到肯定。又经过一年的试用和改进,Java1.0版终于在1996年年初正式发表。Java语言在叫“Java”之前名为“Oak”,橡树。一门语言怎么起到了一棵树的名字?早先开发这门语言的Green小组成员,在为还在“孕期”中待产的新生语言起名时,看到了窗外的一棵橡树,就是这样一念的灵感和联想,把一门新生语言的小名落实了。可惜这个绿意的名字最终被放弃,因为在用Oak去注册商标时,发现这个名已被注册他用,于是Sun的精英们喝着咖啡编排新名,杯里的热咖啡冒着香气,顺着香气思维游荡到盛产咖啡的爪哇岛,爪哇!Java由此命名。Java的发展Sun继Green项目后又经过了几年的研究,终于在1995年5月23日在SunWorld95上正式发布Java和HotJava浏览器。在同年,有很多公司先后获得了Java许可证,如Netscape在1995年8月,Oracle在1995年10月分别获得了Java许可证。Sun在1995年发布第一个Java版本后,于1996年1月宣布成立新的业务部门JavaSoft部,这个部分主要负责开发、销售并支持基于Java技术的产品,由AlanBaratz先生任总裁。在1995年Sun虽然推出了Java,但这只是一种语言,而要想开发复杂的应用程序,必须要有一个的强大的开发库支持还行。因此,Sun在1996年1月23日发布了JDK1.0。这个版本包括了两部分:运行环境(即JRE)和开发环境(即JDK)。在运行环境中包括了核心API、集成API、用户界面API、发布技术和Java虚拟机(JVM)五个部分。而开发环境还包括了编译Java程序的编译器(即javac)。在JDK1.0时代,JDK除了AWT(一种用于开发图形用户界面的API)外,其它的库并不完整。Java的发展Sun在推出JDK1.0后,紧跟着,Sun在1997年2月18日发布了JDK1.1。JDK1.1相对于JDK1.0最大的改进就是为JVM增加了JIT(即时编译)编译器。JIT和传统的编译器不同,传统的编译器是编译一条,运行完后再将其扔掉,而JIT会将经常用到的指令保存在内容中,在下次调用时就不需要再编译了。这样JDK在效率上有了非常大的提升。Sun在推出JDK1.1后,接着又推出了数个JDK1.x版本。1998年是Java开始迅猛发展的一年。在这一年中Sun发布了JSP/Servlet、EJB规范以及将Java分成了J2EE、J2SE和J2ME。标志着Java已经吹响了向企业、桌面和移动3个领域进军的号角。到1998年,Java已经走过了3个年头。从JDK1.0到JDK1.1.8。JDK1.x经过了9个小版本的发展,已经初具规模。至此,它已经走出了摇篮,可以去独闯世界了。Java的发展在1998年12月4日。Sun发布了Java的历史上最重要的一个JDK版本:JDK1.2。这个版本标志着Java已经进入Java2时代。这个时期也是Java飞速发展的时期。在Java2时代Sun对Java进行了很多革命性的变化,而这些革命性的变化一直沿用到现在,对Java的发展形成了深远的影响。JDK1.2自从被分成了J2EE、J2SE和J2ME三大块,得到了市场的强烈反响。不仅如此,JDK1.2还对它的API分成了核心API、可选API和特殊API三大类。从JDK1.2开始,Sun以平均2年一个版本的速度推出新的JDK。在2000年5月8日。Sun对JDK1.2进行了重大升级。推出了JDK1.3。Sun在JDK1.3中同样进行了大量的改进,主要表现在一些类库上(如数学运算、新的TimerAPI等)、在JNDI接口方面增加了一些DNS的支持、增加了JNI的支持,这使得Java可以访问本地资源、支持XML以及使用新的Hotspot虚拟机代替了传统的虚拟机。Java的发展2002年2月13日Sun发布了JDK历史上最为成熟的版本JDK1.4。在进入21世纪以来,曾经在.NET平台和Java平台之间发生了一次声势浩大的孰优孰劣的论战,Java的主要问题就是性能。因此,这次Sun将主要精力放到了Java的性能上。在JDK1.4中,Sun放言要对Hotspot虚拟机的锁机制进行了改进,使JDK1.4的性能有了质的飞跃。同时由于Compaq、Fujitsu、SAS、Symbian、IBM等公司的参与,使JDK1.4成为发展最快的一个JDK版本。到JDK1.4为止,我们已经可以使用Java实现大多数的应用了。在2004年10月,Sun发布了我们期待已久的版本JDK1.5,同时,Sun将JDK1.5改名为J2SE5.0。和JDK1.4不同,JDK1.4的主题是性能,而J2SE5.0的主题是易用。Sun之所以将版本号1.5改为5.0,就是预示着J2SE5.0较以前的J2SE版本有着很大的改过。Java的发展到2006年底Sun又再接再厉地推出了J2SE6.0的测试版,并在2007年初推出它的正式版。正象J2SE6.0的开发代号“野马(Mustang)”一样,我们已经隐约听到了野马的嘶鸣。据Sun发言人称,J2SE6.0不仅在性能、易用性方面得到了前所未有的提高,而且还提供了如脚本、全新的API(Swing和AWT等API已经被更新)的支持。而且J2SE6.0是专为Vista而设计的,它在Vista上将会拥有更好的性能。在推出J2SE6.0的同时,J2SE7.0项目也已经启动。在Java发展的十几年的时间里,经历了无数的风风雨雨。现在Java已经成为一种相当成熟的语言了。在这10年的发展中,Java平台吸引了数百万的开发者,在网络计算遍及全球的今天,更是有20亿台设备使用了Java技术。2009年4月20日,Oracle(甲骨文)宣布收购Sun。Java的意义的意义软件4A目标要求软件能达到任何人在任何地方在任何时间对任何电子设备都能应用。这样能满足软件平台上互相操作,具有可伸缩性和重要性并可即插即用等分布式计算模式的需求。基于构建开发方法的崛起,引出了CORBA国际标准软件体系结构和多层应用体系框架。在此基础上形成了Java.2平台和.NET平台两大派系,推动了整个IT业的发展。Java的意义的意义对软件产业和工业企业都产生了深远的影响,软件从以开发为中心转到了以服务为中心。中间提供商,构件提供商,服务器软件以及咨询服务商出现。企业必须重塑自我,B2B的电子商务将带动整个新经济市场,使企业获得新的价值,新的增长,新的商机,新的管理。对软件开发带来了新的革命,重视使用第三方构件集成,利用平台的基础设施服务,实现开发各个阶段的重要技术,重视开发团队的组织和文化理念,协作,创作,责任,诚信是人才的基本素质。1.1.2Java语言特点Java语言是简单的Java语言是面向对象的Java语言是分布式的Java语言是健壮的Java语言是安全的Java语言是体系结构中立的1.1.2Java语言特点Java语言是可移植的Java语言是解释型的Java是高性能的Java语言是多线程的Java语言是动态的1.1.3Java运行环境的安装与配置JDK是Java开发工具包(JavaDevelopmentKit)的缩写。它是一种用于构建在Java平台上发布的应用程序、applet和组件的开发环境。JDK是一切Java应用程序的基础,所有的Java应用程序是构建在这个之上的。它是一组API,也可以说是一些JavaClass。要成为一个Java程序员,JDK是必不可少的最基本的工具。JDK的下载与安装的下载与安装机器要求机器要求Java对机器运行要求不高。下面给出的是基于Windows平台的机器要求。硬件要求:CPUPII以上,64M内存,100M硬盘空间即可。软件要求:Windows98/Me/XP/NT/2000,IE5以上。JDK的下载与安装下载下载 JDK为了建立基于JDK的Java运行环境,需要先下载Sun的免费JDK软件包。JDK包含了一整套开发工具,其中包含对编程最有用的是Java编译器、Applet查看器和Java解释器。在浏览器中输入http:/ 第第2章章Java语言基础语言基础本章要点Java数据类型与运算符数据类型与运算符Java注释语句注释语句Java分支程序设计分支程序设计Java循环程序设计循环程序设计 Java数组数组Java字符串字符串数据类型与运算符数据类型数据类型Java语言是一种严格的语言是一种严格的“类型化类型化”语言。这意味着每个变量都必语言。这意味着每个变量都必须有一个声明好的数据类型。须有一个声明好的数据类型。Java语言提供了语言提供了8种基本数据类型种基本数据类型:字节型字节型byte、短整型、短整型short、整型、整型int、长整型、长整型long、单精度浮点、单精度浮点型型float、双精度浮点型、双精度浮点型double、字符型、字符型char、逻辑类型、逻辑类型booleanJava是面向对象的程序设计语言,它为用户提供的复合数据类型包括数组、类和是面向对象的程序设计语言,它为用户提供的复合数据类型包括数组、类和接口等接口等 类型之间的转换类型之间的转换自动类型转换自动类型转换强制类型转换强制类型转换运算符运算符注释语句单行注释单行注释-/多行注释多行注释-“/*/”文档注释文档注释-“/*/”例如:在例如:在E:javabook中创建一个中创建一个First.java文件,其代码如下:文件,其代码如下:/*First.java*这是一个简单的这是一个简单的Java应用程序应用程序*/publicclassFirst/*public修饰的类为主类,类名和文件名保持一修饰的类为主类,类名和文件名保持一致致*/主类中要包含主类中要包含main()方法方法publicstaticvoidmain(Stringargs)/方法体方法体注释语句(续)使用使用javadoc命令可以获取文档注释信息,并且生成相命令可以获取文档注释信息,并且生成相应的应的API文档。文档。Javadoc命令用法如下:命令用法如下:javadoc选项选项软件包名称软件包名称源文件源文件file例如,在例如,在E:javabook中新建一文件夹中新建一文件夹Test,以,以First.java为例,将其生成的为例,将其生成的API文档存放在文档存放在Test文件文件夹中,命令如下:夹中,命令如下:javadocdTestFirst.java运行界面如图运行界面如图2.1所示。所示。生成的生成的API文档如图文档如图2.2所示。其中所示。其中index.html是生成是生成的文档首页。的文档首页。注释语句(续)图2.1执行javadoc的运行界面注释语句(续)图2.2生成的API文档分支程序设计所谓分支语句就是对语句中不同条件的所谓分支语句就是对语句中不同条件的值进行判断,进而根据不同的条件执行值进行判断,进而根据不同的条件执行不同的语句。分支语句共有两种:不同的语句。分支语句共有两种:if语句语句和和switch语句语句 分支程序设计-if条件语句if语句的语法格式:语句的语法格式:if(条件(条件1)功能代码功能代码1;elseif(条件(条件2)功能代码功能代码2;elseif(条件(条件3)功能代码功能代码3;else功能代码功能代码;分支程序设计-switch语句switch语句的语法格式:语句的语法格式:switch(表达式表达式)case值值1:功能代码功能代码1;break;case值值2:功能代码功能代码2;break;default:功能代码功能代码1;break;循环程序设计循环就是反复执行一段代码,直到满足循环就是反复执行一段代码,直到满足结束条件。循环语句共有结束条件。循环语句共有while语句、语句、do-while语句和语句和for语句三种。语句三种。循环程序设计-while语句while语句是语句是Java最基本的循环语句,其最基本的循环语句,其语法格式如下:语法格式如下:while(条件表达式条件表达式)/循环体循环体 循环程序设计-do-while循环do-while循环语句语法格式如下:循环语句语法格式如下:do/循环体循环体while(条件表达式条件表达式);循环程序设计-for循环for循环语句的通用格式如下:循环语句的通用格式如下:for(初始化语句初始化语句;循环条件循环条件;迭代语句迭代语句)语句序列语句序列三种循环语句while循环语句的特点是循环语句的特点是“先判断、后执先判断、后执行行”,循环体有可能执行,循环体有可能执行0次;次;do-while循环语句的特点是循环语句的特点是“先执行,后判断先执行,后判断”,循环体至少要执行,循环体至少要执行1次。次。while语句和语句和for语句在循环语句中都属于语句在循环语句中都属于“先判断再循环先判断再循环”的结构,在实际使用的结构,在实际使用时时while语句和语句和for语句之间可以很方便的语句之间可以很方便的进行替换。进行替换。循环程序设计-跳转语句continuecontinue语句可以终止一次循环。如果在某次循环体的执行中执语句可以终止一次循环。如果在某次循环体的执行中执行了行了continue语句,那么就不再执行本次循环中语句,那么就不再执行本次循环中continue语句后语句后面的语句,退出本次循环而直接进行下一次循环。面的语句,退出本次循环而直接进行下一次循环。breakbreak语句可以终止循环或其他控制结构。在语句可以终止循环或其他控制结构。在switch语句中,语句中,break语句可以用来终止一个语句序列;在循环语句中,语句可以用来终止一个语句序列;在循环语句中,break语语句可以用来退出一个循环。句可以用来退出一个循环。returnreturn语句可以从一个方法返回,并把控制权交给调用它的语句。语句可以从一个方法返回,并把控制权交给调用它的语句。return语句通常被放在方法的最后,用于退出当前方法并返回一语句通常被放在方法的最后,用于退出当前方法并返回一个变量或表达式的值。语法格式为:个变量或表达式的值。语法格式为:return变量或表达式的值变量或表达式的值;Java数组-一维数组一维数组的声明一维数组的声明 声明一维数组的格式为:声明一维数组的格式为:typearrayName;typearrayName;其中,类型其中,类型(type)可以为可以为Java中任意的数据类型,包括简单类型中任意的数据类型,包括简单类型和复合类型。和复合类型。Java数组-一维数组一维数组的初始化一维数组的初始化 声明数组仅仅是给出数组名字和元素的数据类型,要声明数组仅仅是给出数组名字和元素的数据类型,要想使用数组还必须为它分配内存空间、赋初值。数组想使用数组还必须为它分配内存空间、赋初值。数组的初始化分为静态初始化和动态初始化两种。的初始化分为静态初始化和动态初始化两种。静态初始化静态初始化 静态初始化是在定义数组的同时对数组元素进行初始静态初始化是在定义数组的同时对数组元素进行初始化,这种方式通常在数组元素个数较少的情况下使用化,这种方式通常在数组元素个数较少的情况下使用动态初始化动态初始化 使用动态初始化方法时,需要使用使用动态初始化方法时,需要使用new关键字来为数关键字来为数组分配空间。格式为:组分配空间。格式为:数组名字数组名字=new数组元素的类型数组元素的类型数组元素的个数数组元素的个数;Java数组-一维数组一维数组元素的引用一维数组元素的引用 一维数组元素的引用方式为:一维数组元素的引用方式为:arrayNameindex其中,其中,index为数组下标,它可以为整型常数或表达式,为数组下标,它可以为整型常数或表达式,下标从下标从0开始。开始。Java数组-多维数组Java语言中,多维数组被看作数组的数组。下面以二语言中,多维数组被看作数组的数组。下面以二维数组为例介绍多维数组的定义、初始化和元素的引维数组为例介绍多维数组的定义、初始化和元素的引用。用。二维数组的声明二维数组的声明声明二维数组的格式为:声明二维数组的格式为:typearrayName;typearrayName;二维数组的初始化二维数组的初始化 二维数组的初始化同样分为静态初始化和动态初始化二维数组的初始化同样分为静态初始化和动态初始化两种。两种。静态初始化静态初始化 静态初始化是在定义数组的同时就为数组分配了内存静态初始化是在定义数组的同时就为数组分配了内存空间。空间。Java数组-多维数组动态初始化动态初始化 对于二维数组的动态初始化,可以有两种方法。对于二维数组的动态初始化,可以有两种方法。直接为每一维分配空间直接为每一维分配空间格式如下:格式如下:arrayName=newtypelen1len2;上面的定义中配置了上面的定义中配置了len1行行len2列的二维数组对象列的二维数组对象Java数组-多维数组从最高维开始,分别为每一维分配空间从最高维开始,分别为每一维分配空间 inta;/声明一个二维整型数组声明一个二维整型数组a=newint2;/该二维数组由该二维数组由2个一维整型数组组个一维整型数组组成成a0=newint3;/第第1个一维数组由个一维数组由3个整数组成个整数组成a1=newint5;/第第2个一维数组由个一维数组由5个整数组成个整数组成二维数组元素的引用二维数组元素的引用 对二维数组中的每个元素,引用格式为:对二维数组中的每个元素,引用格式为:arrayNameindex1index2index1与与index2为下标,这个下标与一维数组一样,为下标,这个下标与一维数组一样,可以是常量、变量或表达式。可以是常量、变量或表达式。Java数组-多维数组数组中常用属性和方法数组中常用属性和方法数组中常用属性数组中常用属性在数组的应用中经常用到数组的长度,表示一维数组在数组的应用中经常用到数组的长度,表示一维数组长度(即元素的个数)的格式为:数组长度(即元素的个数)的格式为:数组.length。lengh属性是数组中唯一的一个属性,属性是数组中唯一的一个属性,length属性也不属性也不存在于存在于API中,而是中,而是JVM自动给加上去的。自动给加上去的。Java数组-多维数组数组中常用方法数组中常用方法get(Objectarray,intindex)getBoolean(Objectarray,intindex)getByte(Objectarray,intindex)getChar(Objectarray,intindex)getDouble(Objectarray,intindex)getFloat(Objectarray,intindex)getInt(Objectarray,intindex)getLength(Objectarray)getLong(Objectarray,intindex)getShort(Objectarray,intindex)Java数组-多维数组数组中常用方法(续)数组中常用方法(续)set(Objectarray,intindex,Objectvalue)setBoolean(Objectarray,intindex,booleanz)setByte(Objectarray,intindex,byteb)setChar(Objectarray,intindex,charc)setDouble(Objectarray,intindex,doubled)setFloat(Objectarray,intindex,floatf)setInt(Objectarray,intindex,inti)setLong(Objectarray,intindex,longl)setShort(Objectarray,intindex,shorts)Java字符串字符串常量字符串常量字符串常量是用双引号括起来的一串字符。字符串常量是用双引号括起来的一串字符。例如:例如:“HelloWorld!”字符串变量的声明字符串变量的声明Strings;字符串变量的创建字符串变量的创建Java语言中,把字符串变量作为对象来处理。语言中,把字符串变量作为对象来处理。Srting类有几种类有几种常见的方法可以将声明和创建一步完成:常见的方法可以将声明和创建一步完成:String();/初始化一个新创建的初始化一个新创建的String对象,它表示一个空字符对象,它表示一个空字符串串String(charchars);/用一个字符数组创建一个字符串对象用一个字符数组创建一个字符串对象String(charchars,intstartIndex,intnumChars);/*提取字提取字符数组符数组chars中中startIndex开始开始numChars个字符创建一个字符个字符创建一个字符串对象,串对象,*/String(Stringoriginal);/*初始化一个新创建的初始化一个新创建的String对象,表对象,表示一个与示一个与original相同的字符串即创建一个字符串副本相同的字符串即创建一个字符串副本*/字符串的常用方法字符串的常用方法length()charAt(intindex)indexOf(intch)lastIndexOf(inch)indexOf(Stringstr)lastIndexOf(Stringstr)indexOf(intch,intfromIndex)lastIndexOf(inch,intfromIndex)indexOf(Stringstr,intfromIndex)lastIndexOf(Stringstr,intfromIndex)getchars(intsrcbegin,intend,charbuf,intdstbegin)getBytes(intsrcbegin,intsrcEnd,bytebuf,intdstbegin)contat(Stringstr)replace(charoldChar,charnewChar)substring(intbeginIndex)substring(intbeginIndex,intendIndex)toLowerCase()toUpperCase()equals(ObjectanObject)equalsIgnoreCase(StringanotherString)另外,可以将数字串转换为整数和双精度数,方法格式如下:另外,可以将数字串转换为整数和双精度数,方法格式如下:Integer.parseInt(String);/将数字字符串转化为整型将数字字符串转化为整型Double.parseDouble(String);/将数字字符串转化为浮点型将数字字符串转化为浮点型本章小结Java语言是一种严格的语言是一种严格的“类型化类型化”语言。这意味着每个变量都必语言。这意味着每个变量都必须有一个声明好的数据类型。须有一个声明好的数据类型。Java语言提供了字节型、短整型、整语言提供了字节型、短整型、整型、长整型、单精度浮点型、双精度浮点型、字符型和逻辑类型型、长整型、单精度浮点型、双精度浮点型、字符型和逻辑类型8种种基本数据类型,语言和数组、类和接口等复合数据。基本数据类型,语言和数组、类和接口等复合数据。Java编程时有时需要进行数据类型转换,数据类型之间的转换有自编程时有时需要进行数据类型转换,数据类型之间的转换有自动类型转换和强制数据类型转换。要实现两种数据类型的自动转换,动类型转换和强制数据类型转换。要实现两种数据类型的自动转换,必须同时满足两个条件,一是两种数据类型彼此兼容,二是目标数必须同时满足两个条件,一是两种数据类型彼此兼容,二是目标数据类型的取值范围要大于源数据类型。能进行自动转换的数据类型据类型的取值范围要大于源数据类型。能进行自动转换的数据类型及转换规则如下:及转换规则如下:byte-short-char-int-long-float-double按照箭头所示方向,左侧的数据类型数据可以自动转换赋值给右侧按照箭头所示方向,左侧的数据类型数据可以自动转换赋值给右侧的数据类型变量,但反之,将右侧的数据类型数据赋值给左侧的数的数据类型变量,但反之,将右侧的数据类型数据赋值给左侧的数据类型变量必须经过强制类型转换。强制类型转换的转换格式为:据类型变量必须经过强制类型转换。强制类型转换的转换格式为:(目标类型)变量名或表达式(目标类型)变量名或表达式强制数据类型转换后可能会丢失一部分数据。强制数据类型转换后可能会丢失一部分数据。本章小结(续)Java语言提供了语言提供了()、!、+(正正)、-(负负)、+、-、*、/、%、+(加加)-(减减)、=、instanceof、=、!=、&(按位与按位与)、|、&、|、?:、=、+=、-=、*=、/=、%=、|=、=、=、=、=等运算符。等运算符。Java中可以采用单行注释、多行注释和生成帮助文中可以采用单行注释、多行注释和生成帮助文档的注释三种注释方式。档的注释三种注释方式。Java分支语句共有分支语句共有if语句和语句和switch语句两种。语句两种。Java循环语句共有循环语句共有while语句、语句、do-while语句和语句和for语句三种。语句三种。Java中支持中支持break语句、语句、continue语句和语句和return语句语句三种跳转语句。三种跳转语句。本章小结(续)Java语言中,数组是一种最简单的复合数据类型。数组是有序数语言中,数组是一种最简单的复合数据类型。数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来唯一地确定数组中的元素。一的数组名和下标来唯一地确定数组中的元素。数组的声明格式为:数组的声明格式为:数据类型数据类型数组名数组名维数维数;数据类型数据类型维数维数数组名数组名;声明数组仅仅是给出数组名字和元素的数据类型,要想使用数组还声明数组仅仅是给出数组名字和元素的数据类型,要想使用数组还必须为它分配内存空间、赋初值。数组的初始化分为静态初始化和必须为它分配内存空间、赋初值。数组的初始化分为静态初始化和动态初始化两种。静态初始化是在定义数组的同时对数组元素进行动态初始化两种。静态初始化是在定义数组的同时对数组元素进行初始化,这种方式通常在数组元素个数较少的情况下使用。动态初初始化,这种方式通常在数组元素个数较少的情况下使用。动态初始化方法是使用始化方法是使用new关键字来为数组分配空间。关键字来为数组分配空间。数组元素的引用方式为:数组元素的引用方式为:数组名数组名维数索引维数索引Java字符串常量是用双引号括起来的一串字符。字符串常量是用双引号括起来的一串字符。Java语言中,把语言中,把String类型的字符串变量作为对象来处理。类型的字符串变量作为对象来处理。Java程序设计基础与实践 第3章类和对象面向对象的基本概念面向对象的基本概念Java语言的修饰符语言的修饰符Java类及类中变量与方法的分类和定义方法类及类中变量与方法的分类和定义方法Java对象的创建、使用和释放对象的创建、使用和释放3.1.1面向对象的编程的基本概念从程序设计的角度来看,面向对象的程序设计必须描从程序设计的角度来看,面向对象的程序设计必须描述对象及其相互之间的关系,系统中一切皆为对象,述对象及其相互之间的关系,系统中一切皆为对象,具体来说,每一个事物就是一个对象,对象所归属的具体来说,每一个事物就是一个对象,对象所归属的分类就是面向对象中重要概念类。分类就是面向对象中重要概念类。类与对象是不同但是又紧密相联的概念。对象是类的类与对象是不同但是又紧密相联的概念。对象是类的实例,是由类生成的,一个对象具有哪些特性和行为,实例,是由类生成的,一个对象具有哪些特性和行为,由类来决定。由类来决定。3.1.2Java语言的修饰符Java语言的修饰符分为访问控制符和非语言的修饰符分为访问控制符和非访问控制符两大类。访问控制符是一组访问控制符两大类。访问控制符是一组限定类、变量或方法是否可以被自身或限定类、变量或方法是否可以被自身或其他程序访问和调用的修饰符,非访问其他程序访问和调用的修饰符,非访问控制符是用于声明特殊类、变量和方法控制符是用于声明特殊类、变量和方法的修饰符。的修饰符。所属所属非访问控制符非访问控制符含义含义类类abstract抽象类修饰符抽象类修饰符,用用abstract修饰符修饰的类,被称为抽象类修饰符修饰的类,被称为抽象类final最终类修饰符最终类修饰符,当一个类不可能有子类时可用修饰符当一个类不可能有子类时可用修饰符final把它说明为最终类把它说明为最终类变量变量static静态修饰符静态修饰符,用用static修饰的成员变量属于类变量修饰的成员变量属于类变量final最终域修饰符最终域修饰符,用用final定义常量定义常量方法方法abstract抽象方法控制符抽象方法控制符,用修饰符用修饰符abstract修饰的方法称为抽象方法修饰的方法称为抽象方法static静态方法控制符静态方法控制符,用修饰符用修饰符static修饰的方法属于类方法修饰的方法属于类方法final最终方法控制符最终方法控制符,用修饰符用修饰符final修饰的方法称为最终方法修饰的方法称为最终方法nativenative本地方法控制本地方法控制符,符,用修饰符用修饰符native修饰的方法称为本地方法,声明可以被外部程序访问的方法修饰的方法称为本地方法,声明可以被外部程序访问的方法synchronized同步方法控制符同步方法控制符,该修饰符主要用于多线程共存的程序中的协调和同步该修饰符主要用于多线程共存的程序中的协调和同步表3.1Java语言主要类、变量和方法的非访问控制符基本含义表表3.2JavaJava语言访问控制符定义的访问权限表语言访问控制符定义的访问权限表同一类中同一类中同一包中同一包中不同包中的子类不同包中的子类不同包中的非子不同包中的非子类类适用范围适用范围publicyyyy类、变量、方法类、变量、方法protectedyyy变量、方法变量、方法缺省缺省yy类、变量、方法类、变量、方法privatey变量、方法变量、方法3.1.3类1.类的定义类的定义在在Java语言中,类定义的基本格式如下:语言中,类定义的基本格式如下:类修饰符类修饰符class类名类名extends父类名父类名implements接口列表接口列表/类声明类声明/类体类体2.变量变量变量的定义变量的定义变量的定义格式:变量的定义格式:变量修饰符变量修饰符类型说明符类型说明符 变量名变量名=初始初始值值,变量名变量名=初始值初始值;变量的分类变量的分类成员变量和局部变量成员变量和局部变量在方法体外变量定义部分的变量称为成员变量,在方在方法体外变量定义部分的变量称为成员变量,在方法体内或方法参数中定义的变量称为局部变量。局部法体内或方法参数中定义的变量称为局部变量。局部变量的作用域为方法体内,成员变量的作用域为整个变量的作用域为方法体内,成员变量的作用域为整个类。类。Java中的成员变量在没有进行显示初始化的时候,系中的成员变量在没有进行显示初始化的时候,系统会自动赋予默认值;局部变量必须进行显示赋值操统会自动赋予默认值;局部变量必须进行显示赋值操作,否则无法通过编译器的编译。作,否则无法通过编译器的编译。例如:例如:class People /class People /定义类定义类 String name=John;/String name=John;/方法体外变量,为成员变量方法体外变量,为成员变量voidsetName(Stringname)/方法参数变量为局部变量方法参数变量为局部变量 System.out.println(System.out.println(采用采用this关键字获得的变量为:关键字获得的变量为:+this.name);/使用使用this访问成员变量访问成员变量 System.out.println(System.out.println(局部变量为:局部变量为:+name);/局部变量局部变量 StringgetName()returnname;/方法体内没有同名的局部变量,则访问方法体外面成方法体内没有同名的局部变量,则访问方法体外面成员变量员变量publicstaticvoidmain(Stringargs)Peoplep=newPeople();/创建创建People类对象类对象pp.setName(Mike);/为局部变量赋值为局部变量赋值 System.out.println(System.out.println(成员变量为:成员变量为:+p.getName();/调用方调用方法法实例变量