Java程序设计ppt课件(完整版)

上传人:青*** 文档编号:242900448 上传时间:2024-09-11 格式:PPTX 页数:280 大小:2.14MB
返回 下载 相关 举报
Java程序设计ppt课件(完整版)_第1页
第1页 / 共280页
Java程序设计ppt课件(完整版)_第2页
第2页 / 共280页
Java程序设计ppt课件(完整版)_第3页
第3页 / 共280页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第六级,第七级,第八级,2021/12/16,Java,程序设计(第二版),第,1,章,Java,概述,Java,语言作为一种优秀的语言,具备面向对象、体系结构中立、安全、稳定和多线程等优良特性,是目前软件设计中功能极为强大的编程语言。,Java,语言不仅可以开发大型的应用程序,而且特别适合,Internet,的应用开发。,Java,具备了“一次编写,到处运行”的特点,因此,它已成为网络时代最重要的语言之一。也许现在还无法评估,Java,为整个,IT,行业带来的影响,但是有一点却勿庸置疑的:,Java,将不可避免地影响一代又一代的程序员。,本章要点,Java,发展简史,Java,的特点,本章要点,Java,和,Internet,安装,JDK,开发环境,使用命令行工具,使用集成开发环境,1.1 Java,发展简史,Java,最初是由,James Gosling,领导的小组在,Sun Microsystem,公司开发的。,Sun,公司于,1991,年投资启动了一个内部研究项目,代号为,Green,。项目的副产品便是诞生了一种类似,C+,的语言,当时,James Gosling,把它命名为,Oak,(橡树),名字起源于其办公室窗外的一棵橡树,后来发现已经有一种计算机语言叫做,Oak,。当一天一群,Sun,公司编程人员在咖啡馆里喝着,Java,(爪哇)咖啡时,有人灵机一动,举荐了,Java,这个名称,得到了其他人的赞赏,于是,Java,这个名字就传开了,并沿用至今。,1996,年,1,月,,Sun,公司发布,Java 1.0,,各大公司(包括,IBM,、,Apple,、,HP,、,Oracle,、,Microsoft,等)相继从,Sun,公司购买了,Java,技术许可证,开发相应的产品。,1.1 Java,发展简史,1998,年,12,月,,Sun,公司发布,Java 2,平台。,1999,年,6,月,,Sun,公司发布,Java,企业平台,J2EE,,成为开发商创建电子商务应用的事实标准。,2002,年,2,月,Sun,公司推出了,JDK,历史上最成熟的版本,JDK1.4,。基于,java,创建的开源框架,如:,Spring,、,Struts,、,Hibernate,等涌现出来,大量企业应用服务器,WebLogic,、,WebSphere,、,JBoss,等也开始涌现。,2004,年,10,月,,JDK1.5,推出,并改名,Java SE 5,,与此同时,,J2ME,、,J2EE,分别改名为,java ME,、,java EE,。,2009,年初推出版本,6,。同年,4,月,,Oracle,公司宣布收购,Sun,公司,经过长时间的等待后,该公司于,2011,年推出了版本,7,。,1.2 Java,的特点,Java,目前非常流行。,Java,的迅速发展和被广泛接受归功于它的设计和程序特征。正如,Sun,公司在,Java,语言白皮书开始所说:,Java,是简单的、面向对象的、分布式的、解释型的、健壮的、安全的、体系结构中立的、可移植的、高效的、多线程的、动态的。,1.2 Java,的特点,1.2.1 Java,是简洁的,与,C+,相比,,Java,的语法实际上是,C+,语法的“缩减”版本。,Java,采用自动内存分配和回收,而,C+,则要求程序员要动手去完成这项工作。语言概念变少、语法清晰使得,Java,程序容易编写和阅读。,Java,是简洁的,因为它的基本解释器和类支持的大小仅约为,40KB,。增加基本的标准库和线程支持,大约仅需要增加,175KB,。,1.2 Java,的特点,1.2.2 Java,是面向对象的,简单说来,面向对象设计是一种把重点放在数据(等于对象)和对象接口的编程技术,,Java,以对象为模型描述现实世界,进行对象创建、对象处理,并使对象协调工作。,Java,的面向对象特性和,C+,相似。两者的主要区别在于对多重继承的处理(,Java,使用单继承和接口技术解决)和,Java,元类模型、反射机制和对象序列化特性使得实现持久对象和,GUI,构建器更为简单和方便。,1.2 Java,的特点,1.2.3 Java,是分布式的,分布式计算涉及多个计算机通过网络协同工作。由于,Java,的网络能力强大且易于使用,远程方法调用机制能够进行分布式对象间的通信。,1.2.4 Java,是解释型的,运行,Java,程序需要一个解释器。,Java,程序编译成,Java,虚拟机(,Java Virtual Machine,)字节码。字节码独立于计算机,只需要编译一次源代码,编译器生成,Java,字节码,,Java,解释器可以在任何移植了,Java,解释器的机器上执行,Java,字节码。,1.2 Java,的特点,1.2.4 Java,是健壮的,Java,非常重视进行早期问题和后期动态(运行时)的检查,以及消除致错状态。,Java,编译器可以查出许多其他语言运行时才能发现的错误。,Java,抛弃了其他语言中容易引起错误的某些程序概念类型,如它不支持指针,避免了内存分配错误,以及必须预防内存泄漏。,Java,具有实时异常处理的功能,这有助于提高程序的健壮性。,Java,强制程序员编写处理异常的代码,使其能够捕获并响应异常情况,从而使程序在发生运行时错误时能够继续正常执行错误处理代码。,1.2 Java,的特点,1.2.5 Java,是安全的,作为,Internet,程序设计语言,,Java,用于网络,/,分布式环境。由于,Java,执行多层安全机制用于保护系统不受恶意程序破坏。,Java,安全机制禁止,Java,程序进行一些操作:,禁止运行时堆栈溢出,避免如蠕虫所做的破坏。,禁止在自己的处理空间外破坏内存。,禁止通过安全控制类装载器来读写本地文件,即当你下载并运行一个,Java Applet,时,它不会损害本地系统,1.2 Java,的特点,1.2.6 Java,是体系结构中立的,传统的编译式语言,源代码必须能被编译成二进制代码或机器代码的可执行形式。而,Java,源代码不会针对一个特定平台进行编译,而是被转换成一种中间格式字节码,字节码无关体系结构,可在任何运行,Java,虚拟机(,JVM,)的计算机上运行,而,Java,虚拟机是与平台相关的。由此可见,,Java,程序在,Java,虚拟机上运行,而,Java,虚拟机又在操作系统上运行。,Java,虚拟机用来解释和执行,Java,字节码。,使用,Java,,软件开发商无须为了适应多个平台为产品开发多个版本,只需编写一个版本就能在各种平台上运行。,1.2 Java,的特点,。,1.2.7 Java,是多线程的,Java,语言通过流控制来执行程序流,程序中单个顺序的流控制称为线程,多线程则指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务。多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。,Java,将线程支持与语言运行环境结合在一起,提供了多任务并发执行的能力,1.2 Java,的特点,1.2.8 Java,是动态的,Java,能够适应变化的环境,类库中允许增加新的方法以及实例变量,而客户端无需做任何修改。在,Java,中,确定实时类型信息是简单直接的。例如那些需要从,Internet,上下载然后在浏览器中运行的代码。,Java,允许编程人员了解对象的结构和行为,这对,Java GUI,构建器、调试器、可插组件和对象数据库等需要运行时刻分析对象的系统非常有用。,1.3 Java,和,Internet,Java,凭借它在语言上无法比拟的优势,如安全性、平台无关性、硬件结构无关性、语言简洁、面向对象等特性成为网络编程的首选语言。,在,Internet,的发展史中,,Java,影响非常深刻,是对计算机产业发展促进作用极大的一种新兴技术。,Java,根植于网络,网络的发展促进了,Java,的规范。,Java,在,Web,上的应用充分显现出它的强大功能。,随着,Java,的广发应用,,Java,技术对,Intranet,的影响日益扩大,使得,Intranet,的构造、应用和管理方式都发生了相应的变化。,1.4 Java Application,程序,Java,程序可分为,Application,(应用程序)和,Applet,(小程序)两种类型,这两类程序的开发原理是相同的,但是运行环境有所不同,,Application,程序有以下主要特点:,Application,程序是独立完整的程序;,在命令行调用独立的解释器即可运行,Application,程序;,Application,程序的主类必须有一个命名为,main,的方法,作为程序的入口;,Application,程序的图形界面需要在程序中自己构建;,1.4 Java Application,程序,下面例子是一个简单的,Application,程序,它的功能是在字符界面上输出,“This is my first Java program!”,【例,1-1,】,Application,程序示例,: MyFirstJavaProgram.java,import java.io.*;,public class MyFristJavaProgram,public static void main(String args),System.out.println(“This is my first Java Program!”);,1.5 Java Applet,程序,Java Applet,是另一类非常重要的,Java,程序,它有如下特点:,Applet,程序不是完整的独立程序,而更像是一个已经构建好的框架程序中的一个模块;,Applet,程序只能在,WWW,浏览器环境下运行,因此还必须建立一个,HTML,文件来调用,Applet,程序;,Applet,程序的主类必须是,java.applet.Applet,类的子类;,Applet,程序不用在程序中构建图形界面,而是直接利用,WWW,浏览器提供的图形用户界面;,1.5 Java Applet,程序,【例,1-2,】,Applet,程序示例,在,WWW,图形界面上输出,“This is my first Java Applet!”: MyFirstJavaApplet.java,import java.applet.Applet;,import java.awt.*;,public class MyFirstJavaApplet,public void paint(Graphics g),g.drawString(“This is my first Java Applet!”);,1.5 Java Applet,程序,因为,Applet,程序不能单独运行,必须要有一个,HTML,页面来调用它使它在,WWW,浏览器上运行,可以通过记事本编写以下的,HTML,文件内容,文件保存为,Applet.html,,与,MyFirstJavaApplet.java,的存放路径一致。,SimpleGraphicsInOut,1.7 JDK,开发工具,1.7.1 JDK,基本命令,Java,工具集为开发人员提供了创建和运行,Java,代码的命令,位于“,Java,安装目录,bin”,下。见表,1-1,所示。,命令名称,说,明,javac,Java,编译器,用于将,Java,源程序编译成字节码,java,Java,解释器,用于解释执行,Java,字节码,appletviewer,小应用程序浏览器,用于测试和运行,Java applet,程序,javadoc,Java,文档生成器,javap,Java,类文件反编译器,jdb,Java,调试器,javah,C,文件生成器,利用此命令可以在,Java,类中调用,C+,代码,jar,打包工具,将相关的类文件打包成一个文件,javadoc,文档生成器,从源码注释中提取文档,表,1-1 java,命令,1.7 JDK,开发工具,1.7.2 JDK,构成,JDK,目录里的基本构成:,bin,:包含编译器、解释器等可执行文件,demo,:该存放一些示例文件,include,:该目录存放与,C,相关的头文件,jre,:存放与,java,运行环境相关的文件,即,Java Runtime Environment,。,lib,:存放程序库,即,java,类库,1.7 JDK,开发工具,1.7.3 JDK,安装与配置,要编译运行,Java,程序,首先要安装,Java,运行环境,下面我们介绍如何安装,JDK1.7,:,(,1,)从,Oracle,官网(, Files (x86)Javajdk1.7.0_75,目录中。,(,3,)设置,Win7,系统环境变量。,1.7 JDK,开发工具,在“系统变量”选项组中,编辑变量“,Path,”,在变量值的最前面加上:,;C:Program Files (x86)Javajdk1.7.0_75bin,。如果曾经设置过环境变量“,Path,”,可单击该变量进行编辑操作,将需要的值加入即可。,在“系统变量”选项组中,单击“新建”按钮,如图,1.7,所示。新建变量名:,Classpath,,变量值:,.; C:Program Files (x86)Javajdk1.7.0_75libtools.jar; C:Program Files (x86)Javajdk1.7.0_75libdt.jar,。如果曾经设置过环境变量“,Classpath,”,可单击该变量进行编辑操作,将需要的值加入即可。,图,1-1,设置系统环境变量,1.8 Eclipse,集成开发环境,1.8 Eclipse,集成开发环境,本节主要介绍,IBM,公司的,Eclispe,。,Eclispe,是一个功能强大的集成开发环境,用户可以从,Eclispe,的官方网站(,)下载,Eclispe,软件包。本书使用的是,4.4.2,版本的,Eclispe,。,1.8 Eclipse,集成开发环境,1.8.1,安装,安装,Eclipse,的步骤非常简单,它属于绿色软件的安装方法:不需要运行安装程序,不需要往,Windows,的注册表写信息,只需要将下载的,Eclispe,压缩包解压就可以运行,Eclispe,。然后将多国语言包解压并将解压出来的,plugins,文件夹和,features,文件夹去覆盖,eclipse,文件夹下的同名文件夹即可。,1.8 Eclipse,集成开发环境,1.8.2,界面介绍,Eclipse,第一次启动时,会弹出一个设定工作空间的路径对话框。,Eclipse,的工作窗口,主要由以下几部分构成:菜单栏、工具栏(,tool bar,)、透视图(,perspective,),而透视图又分为视图(,view,)、编辑器(,editor,),视图是,Eclipse,中一个个功能窗口,由导航器视图、大纲视图和任务视图构成;透视图则是由一些视图、编辑器组成的集合。,图,1-2 Eclipse,界面,1.8 Eclipse,集成开发环境,1.8.3,创建,Java,项目并运行,Java,项目包含用于构建,Java,程序的源代码和相关文件。创建一个,Java,项目主要分为以下步骤:,第一步:新建一个,Java,项目。选择主菜单“文件新建java项目”,创建,Java,项目。,第二步,新建,Java,类。选择主菜单“文件新建类”,在“新建,Java,类”窗口中输入类名,MyFirstJavaProgram,,输入包名,com.bokee.yanghouqun,,并选中,public static void main(String args),选项来自动创建一个,main,方法,第三步 编写程序,无错误后即可运行项目。选择“运行”菜单中的“运行”选项,或者直接单击,,在控制台视图上就可以看到程序运行的结果。,1.8 Eclipse,集成开发环境,1.8.4 Java,程序调试,以,debug,方式运行,java,程序后,(,F5,)单步执行程序,遇到方法时进入;,(,F6,)单步执行程序,遇到方法时跳过;,(,F7,)单步执行程序,从当前方法跳出;,(,F8,)直接执行程序。遇到断点时暂停;,另,在,debug,时,会有很多有用信息显示在,debug,框里,如堆栈信息,需要自己实践;在程序界面里,鼠标移到变量上时会有当前变量的属性值。,Java,程序设计(第二版),第,2,章,Java,基本编程结构,在本章中,将学习,Java,的基本数据类型和相关主题,如变量、常量、数据类型、操作符和控制结构,学习如何利用基本数据类型以及操作符来编写简单的,Java,程序。,本章要点,掌握,Java,语言的基本元素;,理解,Java,程序的基本构成;,掌握结构化程序设计的三种基本流程。,2.1,简单的,Java,程序,建立一个名为,Test.java,的源文件,【例,2-1,】输出,“,欢迎进入,JAVA,世界!,”,的程序,public class Test,public static void main(String args),System.out.println(“,欢迎进入,JAVA,世界!,”);,2.2,注释,在程序添加注释时可以用来解释程序的某些部分的作用和功能,提高程序的可读性。,Java,里的注释根据不同的用途分为三种类型:,单行注释:就是在注释内容前面加双斜线(,/,)。如,int c=10; /,定义一个整型,多行注释:以单斜线加一个星形标记,(/*),开头,以一个星形标记加单斜线,(*/),结束。如:,/* int c=10;,int x=5;,*/,文档注释:是以单斜线加两个星形标记,(/*),开头,并以一个星形标记加单斜线,(*/),结束。,2.3,基本数据类型,Java,的数据类型分为基本数据类型和复杂数据类型(在后续章节再详细介绍复杂数据类型),类型,关键字,长度,十进制下取值范围,默认值,布尔型,boolean,8,true|false,false,字符型,char,16,0,65535,u0000,整型,byte,8,-2,7,2,7,-1,0,short,16,-2,15,2,15,-1,0,int,32,-2,31,2,31,-1,0,long,64,-2,63,2,63,-1,0,浮点型,float,32,3.4e,-38,3.4e,+38,double,64,1.7e,-308,1.7e,+308,0.0d,表,2-1 Java,的基本数据类型,2.4,变量,在程序运行期间,系统可以为程序分配一块内存单元,用来存储各种类型的数据。系统分配的内存单元要使用一个标记符来标识,这种内存单元中的数据是可以更改的所以叫变量。,定义变量的标记符就是变量名,在内存单元中,所装载的数据就是变量值。,用一个变量定义一块内存以后,程序就可以用变量名代表块内存中的数据。根据所存储数据类型的不同,有各种不向类型的变量。,2.4,变量,2.4.1,声明变量,在使用变量之前,必须要先声明变量。声明变量,就是指定变量的数据类型。声明变量的一般格式为:, ,,,,,其中:,(,1,),:它可以是,java,的基本数据类型、对象数据类型和类。,(,2,),:定义变量的标记符。,(,3,)方括号里的内容是可选的。,我们也可以在声明的同时给该变量赋初始值,声明格式如下:, = ,,,= ,2.4,变量,2.4.2,变量的使用,变量的使用其实非常简单。当在程序的语句中,你使用到该变量的名称时,编译器就会自动将当时变量中的值拿来使用。,需要将一种数据类型的值赋值给另一种不同数据类型的变量,由于数据类型有差异,在赋值时就需要进行数据类型的转换,数据转换有:自动类型转换和强制类型转换。基本数据类型中各类型数据间的优先关系,如下:,低,-,高,byte-short-char- int - long - float - double,2.4,变量,2.4.3,变量的作用域,每个变量都有一个相应的可以被使用的作用范围,称这个作用范围为变量的作用域。变量在其作用域内可以通过它的变量名被引用。并且作用域也决定了系统什么时候创建变量、什么时候清除它。,声明变量时,就指明了变量的作用域。,图,2.1 Java,变量的作用域,2.5,常量,常量和变量一样也是用来存储数据的;但在程序运行期间,常量值是不能改变的,变量值是可以改变的。,常量有两种存在方式:一种是引用,Java,平台所定义的;另一种是编程者自己定义。常量的定义形式如下:,final =,;,其中:,(,1,),是常量的名称。,(,2,),是对应常量的具体的值。,(,3,),final,保留字用于标记所定义,的值在程序编译和运行期间都不能被继承。,(,4,),说明,的类型,它可以是简单数据类型,也可以是用户定义的数据类型。,2.6,操作符,Java,语言中定义了丰富的运算符。基本的运算符按功能划分,有算术运算符、关系运算符、逻辑运算符、位运算符,2.6.1,赋值运算符,在,Java,中,将等号“,=,”作为赋值运算符。声明变量后,可以使用赋值运算符“,=,”将一个表达式的值赋值给变量,语法如下:,变量,=,表达式;,在赋值语句中,左边变量的数据类型必须和右边的数据类型兼容。例如,,int x=1.0,是非法的,因为,x,的数据类型是整型,int,。在不使用类型转换的情况下,是不能把,double,值,1.0,赋给,int,变量的。,2.6,操作符,2.6.2,算术运算符,算术运算符用于实现数学运算。算术运算符有:,+,(加),,(减),,*,(乘),,/,(除),,%,(取余),,+,(递增),,- -,(递减)。,对,“+”,运算符和,“-”,运算符而言,有,“,前递增,”,、,“,后递增,”,、,“,前递减,”,和,“,后递减,”,之分。,“,前递增,”,表示,“+”,运算符位于变量的前面;,“,后递增,”,表示,“+”,运算符位于变量的后面。类似地,,“,前递减,”,意味着,“-”,运算符位于变量的前面;,“,后递减,”,意味着,“-”,运算符位于变量的后面。对于前递增和前递减(如,+A,或,-A,),会先执行运算,后赋值;而对于后递增和后递减(如,A+,或,A-,),则赋值,后执行运算。,2.6,操作符,2.6.3,关系运算符,关系运算符用于测试两个操作数之间的关系,形成关系表达式。关系表达式将返回一个布尔值。它们多用在控制结构的判断条件中。,Java,定义的关系运算符有:,(大于),,=,(大于等于),,=,(小于等于),,=,(等于),,!=,(不等于)。,注意:对浮点数值的比较是非常严格的。一个数值仅在小数部分与另一个数值存在极微小的差异,仍然认为它们是,“,不相等,”,的。因此,通常不在两个浮点数值之间进行,“,等于,”,的比较。,2.6,操作符,2.6.4,逻辑运算符,逻辑运算符用来进行逻辑运算。,Java,定义的逻辑运算符有:,!,(非),,&,(与),,|,(或)。若两个操作数都是,true,,则逻辑与运算符(,&,)操作输出,true,;否则输出,false,。若两个操作数至少有一个是,true,,则逻辑或运算符(,|,)操作输出,true,,只有在两个操作数均是,false,的情况下,它才会生成一个,false,。逻辑非运算符(,!,)属于一元运算符,它只对一个自变量进行操作,生成与操作数的相反的值:若输入,true,,则输出,false,;若输入,false,,则输出,true,。,2.6,操作符,2.6.5,位运算符,位运算总体分为两类运算符:按位运算符和移位运算符。位运算符只用于整型和字符型数据。,按位运算符,按位与运算(,&,)、按位或运算(,|,)、按位异或运算(,),按位取反运算(,),移位运算符,左移位运算符(,与,)运算符(,)执行一个右移位(带符号),左边按符号位补,0,或,1,。,2.6,操作符,2.6.6,其他运算符,赋值运算符(,=,),使用的形式是:,A=4,条件运算符(,?,),使用的形式是:,x ? y,:,z;,instanceof,运算符:对象运算符,instanceof,用来判断一个对象是否是某一个类或者其子类的实例。,()和, ,运算符,括号运算符()的优先级是所有运算符中最高;方括号运算符, ,是数组运算符。,运算符,运算符用于访问对象实例或者类的类成员函数。,new,运算符,用于创建一个新的对象或者新的数组。,2.6,操作符,2.6.7,运算符优先级与结合性,在,Java,语言中,规定了运算符的优先级和结合性。优先级是指同一表达式中多个运算符被执行的次序,在表达式求值时,先按运算符的优先级别由高到低的次序执行。结合性是指当一个运算对象两侧的运算符优先级别相同时,按规定的“结合方向”来处理。,表,2-3,列出了各个运算符的优先级别和结合性,优先级的数字越小表示优先级别越高,初学者在使用运算符时可以经常参考。,运算符,优先级,结合性,括号运算符:,(),1,自左至右,方括号运算符:,1,自左至右,一元运算符:,!,、,+,(正号)、,-,(负号),2,自左至右,位运算符:,2,自左至右,递增、递减运算符:,+,、,-,2,自左至右,算术运算符:,*,、,/,、,%,3,自左至右,算术运算符:,+,、,-,4,自左至右,位左移、位右移运算符:,5,自左至右,关系运算符:,、,=,、,、,=,6,自左至右,关系运算符:,=,、,!=,7,自左至右,位运算符:,&,8,自左至右,位运算符:,9,自左至右,位运算符:,|,10,自左至右,逻辑运算符:,&,11,自左至右,逻辑运算符:,|,12,自左至右,条件运算符:,?:,13,自右至左,(,复合,),赋值运算符:,=,、,+=,、,-=,、,*=,、,/=,、,%=,14,自右至左,表,2-3,运算符的优先级别与结合性,2.7,控制语句,在,Java,语言程序设计中,通过控制语句实现执行流程的控制,完成一定的任务。流程是由若干个语句组成的,语句可以是单一的一条语句,如,c=a+b,也可以是用大括号,括起来的一个复合语句。,Java,中的控制语句有以下几类:,分支语句:,if-else, switch,循环语句:,while, do-while, for,与程序转移有关的跳转语句:,break, continue, return,2.7,控制语句,2.7.1,分支语句,1. if,语句,if,语句的基本格式如下:,if (),else,else,子句是可选项,换句话说,一个,if,语句可以有,else,子句,也可以没有,else,子句。,图,2.2 if-else,结构示意图,2.7,控制语句,2.7.1,分支语句,2. switch,语句,在多个条件选择时,可以使用,switch,语句,switch (),case : ,break;,case : ,break;,default : ,图,2.3 switch,结构示意图,2.7,控制语句,2.7.2,循环语句,循环语句的作用是反复执行一段代码,直到满足终止循环的条件为止。因此,一个循环应该包括循环的初始化、循环体、循环的终止条件。,for,语句,格式如下:,for (; ),2.7,控制语句,2.7.2,循环语句,循环语句的作用是反复执行一段代码,直到满足终止循环的条件为止。包括循环的初始化、循环体、循环的终止条件。,for,语句,格式如下:,for (; ),图,2.4 for,循环结构示意图,2.7,控制语句,2.7.2,循环语句,while,语句,格式如下:,while (),先判断,是否成立:若成立,则执行,,继续循环操作;若,不成立,则停止循环。,图,2.5 while,循环结构示意图,2.7,控制语句,2.7.2,循环语句,do-while,语句,格式如下:,do ,while (),其执行顺序是:先执行,,后判断,是否成立:若成立,则继续循环操作;若,不成立,则停止循环。,图,2.5 do-while,循环结构示意图,2.7,控制语句,2.7.3,与程序转移有关的跳转语句,(,1,),break,语句,break,语句有两种使用方法:第一种,,break,语句出现在,switch,语句或循环体时,使程序从循环体和,switch,语句内跳出,继续执行逻辑上的下一条语句;第二种,在,Java,中,可以为每个代码块加一个括号,一个代码块通常是用大括号,括起来的一段代码。加标号的格式如下:,块名,: ,语句块,break,语句的第二种使用情况就是跳出它所指定的块,并从紧跟该块的第一条语句处执行。例如:,break,块名;,2.7,控制语句,2.7.3,与程序转移有关的跳转语句,(,2,),continue,语句,continue,语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。,continue,语句只可能出现在循环语句(,while,、,do-while,和,for,循环)的循环体中。同,break,语句一样,,continue,语句也可以跳转到一个标签处。请看下面的例子,注意其中,continue,语句与,break,语句在循环中的区别。,2.7,控制语句,2.7.3,与程序转移有关的跳转语句,(,3,),return,语句,return,语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:,return,表达式,;/return;,return,语句通常用在一个方法体的最后,否则会产生编译错误,除非用在,if-else,语句中。,Java,程序设计(第二版),第,3,章,字符串和数组,本章介绍,Java,处理字符串和数组。字符串由一系列字符组成,这些字符可视为一个单元。本章将详细讨论,java.lang,包中的,String,类、,StringBuffer,类和,java.util,包中,StringTokenizer,类的功能。数组是相同类型的相关数据项组成的数据结构,本章主要讨论一维数组和多维数组的使用。,本章要点:,熟练处理字符串;,掌握数组的定义、创建及使用。,3.1,字符串,前面介绍的,但由于单个字符,char,类型所蕴含的信息太少,不适合大量信息处理,当把一个个字符组合在一起时,就可以包括更多新的含义,这就形成新的数据类型,字符串。字符串一直是程序设计的主要内容,也是容易出现错误的地方。,这里介绍,java,语言所提供的,3,种常用字符串类:,String,类(字符串类);,StringBuffer,类(字符串缓冲器);,StringTokenizer,类(词法分析器类)。,3.1,字符串,3.1.1 String,类,在前面的学习中,我们已经用过字符串,如,println(String s),方法中的参数。该方法的功能是通过,Java,解释器将要输出的内容转化成一个,String,对象,再把它传给,println,方法输出。,Java,语言使用,java.lang.String,类处理字符串。,(1),构造一个字符串,字符串常量是用双引号括住的一串字符。如“,welcome to java,!”。要创建一个字符串,需要用到下面的语法:,String,字符串变量名,= new String (,字符串常量,);,另外,Java,还提供了一个简单的创建字符串的简单语法:,String,字符串变量名,=,字符串常量。,3.1,字符串,(2).,常用方法,返回字符串长度的方法:,public int length ( ),返回指定位置字符的方法:,public char charAt ( int index),把字符串中指定内容拷贝到字符数组的方法:,public void getChars ( int srcBegin , int srcEnd , char dst , int dstBegin ),比较两个字符串是否相等的方法:,public boolean equals ( Object anObject),3.1,字符串,(2).,常用方法,比较两个字符串在不区分大小写时是否相等的方法:,public boolean equals IgnoreCase( Object anObject),比较两个字符串大小的方法:,public int compareTo ( Object anObject),检查在指定范围内是否有指定前缀内容的方法:,public String startWith (String pre , int toffset),连接两个字符串的方法:,public String concat ( String str),3.1,字符串,(2).,常用方法,返回指定字符和指定字符串在字符串中第一次出现的位置值的方法:,public String indexOf (char ch),public String indexOf ( String str ),在字符串中使用指定字符进行替换的方法:,public String replace ( char oldchar , char newChar ),取子串的方法:,public String substring (int start , int end),把字符串中字符转换为大小写的方法:,public String toUpperCase ( ),public String toLowerCase ( ),3.1,字符串,3.1.2 StringBuffer,类,字符串一旦创建,它的值就固定了,但在实际应用中,经常需要对字符串的内容做动态的修改,,java,语言中,String,类的替代品,StingBuffer,类(字符串缓冲器类型)可以实现该操作。,StingBuffer,类比,String,类更灵活,可以在字符串缓冲区中添加、插入、追加新内容。,(1),构造一个字符缓冲区,StringBuffer( ); /*,分配,16,个字符的缓冲区,*/,StringBuffer( int len ); /*,分配,len,个字符的缓冲区,*/,StringBuffer( String s ); /*,除了按照,s,的大小分配空间外,再分配,16,个字符的缓冲区,*/,3.1,字符串,3.1.2 StringBuffer,类,(1),常用方法,获得字符串长度的方法:,public int length ( ),重新设置字符串长度的方法:,public void setLength (int newLength ),返回当前缓冲区容量的方法,public int capacity ( ),在字符串添加新内容的方法:,public StringBuffer append (String str),3.1,字符串,3.1.2 StringBuffer,类,(1),常用方法,删除字符串指定内容的方法:,public StringBuffer delet (int start , int end),使用字符串替换指定内容的方法:,public StringBuffer replace (int start , int end , String str),在指定位置插入字符串的方法:,public StringBuffer insert (int offset , String str),反转字符串内容的方法:,public StringBuffer reverse ( );,3.1,字符串,3.1.3 StringTokenizer,类,java.util.StringTokenizer,类可以将一个串分成小片,以便提取和处理其中的信息。如果想得到一个串的全部单词,比如该串为,”I am learning Java now”,,可以为它创建一个,StringTokenizer,类的实例,然后用,StringTokenizer,类中的方法提取单个单词。,(1),构造字符串词法分析器,public StringTokenizer ( String str); /*,构造一个字符串且采用默认分隔符的词法分析器,*/,public StringTokenizer ( String str , String delim); /*,构造一个指定字符串和分隔符的词法分析器,*/,public StringTokenizer ( String str , String delim ,boolean returnDelims); /*,构造一个指定字符串和分隔符且返回分隔符的词法分析器,*/,3.1,字符串,3.1.3 StringTokenizer,类,(2),常用方法,测试是否还有分析出来的单词:,public boolean hasMoreTokens( );,返回下一个单词:,public String nextToken( );,返回分析出来的单词个数,public int countTokens( );,StringTokenizer,对象时,可以指定一套定界符号识别每一个单词。定界符把串分成为令牌的小片。,3.1,字符串,3.1.4 Character,类,Character,类是对单个字符进行操作。,public Character,(,char,),/,以造一个,Character,对象。,2.,常用方法,public String toString() ,当前,Character,对象转换成字符串。,public int compareTo(Character anotherCharacter),当前,Character,对象与,anotherCharacter,比较。相等关系返回;小于关系返回负数;大于关系返回正数。,public static boolean isUpperCase(char c),或,isLowerCase(char c),判断字符,c,是否为大写字母或小写字母,public static Boolean isLetter(char ch),判断字符,ch,是否为字母,3.2,数组,当我们需要存储一组数据时,由于为每一个数据声明一个变量来存放是不可能的。因此,我们需要一个更高效组织数据的方法,这就是将要介绍的数组。数组是一种最简单的复合数据类型,是多个相同数据类型数据的组合,它的出现实现了对这些相同数据的统一管理。,Java,将数组作为对象处理,有一维数组和多维数组之分。,3.2,数组,3.2.1,一维数组,1,一维数组的声明, ;, ;,其中,这里数据类型可以是基本数据类型,也可以是以后我们将要学到的对象数据类型。数组名是一个标识符,“, ,”指明了该变量是一个数组类型变量。,3.2,数组,3.2.1,一维数组,2.,一维数组的创建和初始化,创建数组指的是在声明数组之后为数组分配存储空间,同时对数组中的元素执行初始化。因为定义一维数组后,在没有初始化之前,数组是不能被引用的,所以在使用数组之前必须进行初始化。初始化的方式有两种:,静态方式:, = ;,动态方式:, = new ;,。,3.2,数组,3.2.1,一维数组,3,对数组的操作,(,1,)对数组元素的引用,数组创建后就可以直接引用了,一般情况下只能对数组元素逐个引用而不能一次引用整个数组。在程序中使用数组元素和使用同类型的普通变量一样,格式如下:, ,下标,其中,下标是非负的整型常数或表达式。数组的下标从,0,开始编号,直到数组的最后一个元素,即数组的长度减,1,。如:,int sum = new int 3 ;,定义了数组,sum,有,3,个元素,它们分别为:,sum 0 ,,,sum 1 ,,,sum 2 ,。,3.2,数组,3.2.1,一维数组,(,2,)数组的长度,每个数组都有一个属性,length,指明它的长度(可以容纳元素的个数),如:,intArray.length,指明数组,intArray,的长度。,java,运行时系统时,会对数组下标进行越界检查,因此下标值必须在指定的范围内:,0intArray.length,。,数组的最大下标值为,length-1,,以保证安全性;如有越界将产生下标越界(,ArrayIndexOutOfBoundexception,)的编译错误。,另外,java,中的数组一旦创建,大小就不可以改变了。但是,可以为数组重新分配空间,这样原来数组元素的值将被清除。它还是独立的类,有自身的方法和属性。,3.2,数组,3.2.1,一维数组,(,3,)数组的复制,在,Java,中,在两个数组间使用赋值语句(,=,),例如:,newArray = array;,这两个数组名指向的都是同一数组,改变,newArray,数组元素的值,,array,数组元素的值也会随之改变。因为数组名存放的是一个引用地址(为数组分配的存储空间的首地址),是一个地址常量。如果把数组名赋值给另一个数组名时,传送的是地址,这样两个数组名指向同一个地址,实际上是给同一个数组取两个名字。如果改变其中一个数组的内容,另一个也会改变。,3.2,数组,实现数组复制有下面三种方法:,用循环语句复制数组的每个元素,如:,for (int i-0 ; i intArray . length ; i+ ),targetArray i = intArray i ;,使用,Object,类的,clone,方法,如:,int targetArray = ( int ) intArray . clone ( ) ;,使用,System,类中的静态方法,arrycopy,:,System . arraycopy ( sourceArray , offset1 , targetArray , offset2 , number ),其中,,sourceArray,和,targetArray,是源数组和目标数组名,它们必须是已经初始化的数组。,Offset1,和,offset2,分别是源数组和目标数组操作的起始下标,,number,表示要复制的元素的个数。,3.2,数组,3.2.2,多维数组,前面,我们已经学会了如何使用一维数组。但如果需要表示更复杂的数据,如矩阵或表格,因此我们需要使用二维数组了。在,java,语言中,没有真正的多维数组,多维数组被看成是“数组的数组”。,1.,二维数组的声明, ;, ;,与一维数组一样 ,声明数组时,系统并没有为数组分配存储空间,因此不能指定各维的长度。用,new,关键字来创建数组后,系统才为数组分配存储空间。,3.2,数组,3.2.2,多维数组,2.,二维数组的创建,直接为每一维分配空间:,如:,char a = new char 3 2 ;,java,首先把数组,a,看做是一维的字符型数组,一维数组,a,有,3,个(行标)元素,每个元素的值又是一个一维数组,每一个这样的一维数组又分别都有,2,个(列标)元素。,从最高维开始分别为每一维分配空间:,如:,char a = new char 3 ;/,最高维表明数组是一个含,3,个元素的一维数组,3.2,数组,3.2.2,多维数组,2.,二维数组的初始化与引用,对二维数组中的初始化有两种方法:,直接为每个元素赋值:,int a = new int 2 2;,a 0 0 =1; a 0 1 =2; a 1 0 =3; a 1 1 =4;,在声明的同时进行初始化:,int a =1 , 2 , 3 , 4 ;,对二维数组的引用,其引用方式为:,数组名,下标,1 ,下标,2 ;,其中,下标,1,、下标,2,为非负的整型常数或表达式。下标取值都从,0,开始。,3.3,排序,排序是将一组数据依照一定得顺序排列起来。最常见的排序是“从小到大”递增排序和“从大到小”递减排序。在,JAVA,中在运用数组进行排序功能时,常用的排序算法有:选择排序法、插入排序法、冒泡法。,3.3,排序,3.3.1,选择排序,算法思想:首先从数组中选择出最大值(或最小值)放在第一个(或最后一个)位置,然后再从数组里剩下的元素里选择出最大值(或最小值)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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