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

上传人:可****阿 文档编号:77249030 上传时间:2023-03-13 格式:PPTX 页数:280 大小:2.14MB
返回 下载 相关 举报
Java程序设计ppt课件(完整版).pptx_第1页
第1页 / 共280页
Java程序设计ppt课件(完整版).pptx_第2页
第2页 / 共280页
点击查看更多>>
资源描述

《Java程序设计ppt课件(完整版).pptx》由会员分享,可在线阅读,更多相关《Java程序设计ppt课件(完整版).pptx(280页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Java程序设计(第二版)第第1章章Java概述概述Java语言作为一种优秀的语言,具备面向对象、体系结构中立、安全、稳定和多线程等优良特性,是目前软件设计中功能极为强大的编程语言。Java语言不仅可以开发大型的应用程序,而且特别适合Internet的应用开发。Java具备了“一次编写,到处运行”的特点,因此,它已成为网络时代最重要的语言之一。也许现在还无法评估Java为整个IT行业带来的影响,但是有一点却勿庸置疑的:Java将不可避免地影响一代又一代的程序员。本章要点Java发展简史Java的特点本章要点Java和Internet安装JDK开发环境使用命令行工具使用集成开发环境1.1Java

2、发展简史发展简史Java最初是由JamesGosling领导的小组在SunMicrosystem公司开发的。Sun公司于1991年投资启动了一个内部研究项目,代号为Green。项目的副产品便是诞生了一种类似C+的语言,当时JamesGosling把它命名为Oak(橡树),名字起源于其办公室窗外的一棵橡树,后来发现已经有一种计算机语言叫做Oak。当一天一群Sun公司编程人员在咖啡馆里喝着Java(爪哇)咖啡时,有人灵机一动,举荐了Java这个名称,得到了其他人的赞赏,于是Java这个名字就传开了,并沿用至今。1996年1月,Sun公司发布Java1.0,各大公司(包括IBM、Apple、HP、O

3、racle、Microsoft等)相继从Sun公司购买了Java技术许可证,开发相应的产品。1.1Java发展简史发展简史1998年12月,Sun公司发布Java2平台。1999年6月,Sun公司发布Java企业平台J2EE,成为开发商创建电子商务应用的事实标准。2002年2月,Sun公司推出了JDK历史上最成熟的版本JDK1.4。基于java创建的开源框架,如:Spring、Struts、Hibernate等涌现出来,大量企业应用服务器WebLogic、WebSphere、JBoss等也开始涌现。2004年10月,JDK1.5推出,并改名JavaSE5,与此同时,J2ME、J2EE分别改名为

4、javaME、javaEE。2009年初推出版本6。同年4月,Oracle公司宣布收购Sun公司,经过长时间的等待后,该公司于2011年推出了版本7。1.2Java的特点的特点Java目前非常流行。Java的迅速发展和被广泛接受归功于它的设计和程序特征。正如Sun公司在Java语言白皮书开始所说:Java是简单的、面向对象的、分布式的、解释型的、健壮的、安全的、体系结构中立的、可移植的、高效的、多线程的、动态的。1.2Java的特点的特点1.2.1Java是简洁的是简洁的与C+相比,Java的语法实际上是C+语法的“缩减”版本。Java采用自动内存分配和回收,而C+则要求程序员要动手去完成这项

5、工作。语言概念变少、语法清晰使得Java程序容易编写和阅读。Java是简洁的,因为它的基本解释器和类支持的大小仅约为40KB。增加基本的标准库和线程支持,大约仅需要增加175KB。1.2Java的特点的特点1.2.2Java是面向对象的是面向对象的简单说来,面向对象设计是一种把重点放在数据(等于对象)和对象接口的编程技术,Java以对象为模型描述现实世界,进行对象创建、对象处理,并使对象协调工作。Java的面向对象特性和C+相似。两者的主要区别在于对多重继承的处理(Java使用单继承和接口技术解决)和Java元类模型、反射机制和对象序列化特性使得实现持久对象和GUI构建器更为简单和方便。1.2

6、Java的特点的特点1.2.3Java是分布式的是分布式的分布式计算涉及多个计算机通过网络协同工作。由于Java的网络能力强大且易于使用,远程方法调用机制能够进行分布式对象间的通信。1.2.4Java是解释型的是解释型的运行Java程序需要一个解释器。Java程序编译成Java虚拟机(JavaVirtualMachine)字节码。字节码独立于计算机,只需要编译一次源代码,编译器生成Java字节码,Java解释器可以在任何移植了Java解释器的机器上执行Java字节码。1.2Java的特点的特点1.2.4Java是健壮的是健壮的Java非常重视进行早期问题和后期动态(运行时)的检查,以及消除致错

7、状态。Java编译器可以查出许多其他语言运行时才能发现的错误。Java抛弃了其他语言中容易引起错误的某些程序概念类型,如它不支持指针,避免了内存分配错误,以及必须预防内存泄漏。Java具有实时异常处理的功能,这有助于提高程序的健壮性。Java强制程序员编写处理异常的代码,使其能够捕获并响应异常情况,从而使程序在发生运行时错误时能够继续正常执行错误处理代码。1.2Java的特点的特点1.2.5Java是安全的是安全的作为Internet程序设计语言,Java用于网络/分布式环境。由于Java执行多层安全机制用于保护系统不受恶意程序破坏。Java安全机制禁止Java程序进行一些操作:禁止运行时堆栈

8、溢出,避免如蠕虫所做的破坏。禁止在自己的处理空间外破坏内存。禁止通过安全控制类装载器来读写本地文件,即当你下载并运行一个JavaApplet时,它不会损害本地系统1.2Java的特点的特点1.2.6Java是体系结构中立的是体系结构中立的传统的编译式语言,源代码必须能被编译成二进制代码或机器代码的可执行形式。而Java源代码不会针对一个特定平台进行编译,而是被转换成一种中间格式字节码,字节码无关体系结构,可在任何运行Java虚拟机(JVM)的计算机上运行,而Java虚拟机是与平台相关的。由此可见,Java程序在Java虚拟机上运行,而Java虚拟机又在操作系统上运行。Java虚拟机用来解释和执

9、行Java字节码。使用Java,软件开发商无须为了适应多个平台为产品开发多个版本,只需编写一个版本就能在各种平台上运行。1.2Java的特点的特点。1.2.7Java是多线程的是多线程的Java语言通过流控制来执行程序流,程序中单个顺序的流控制称为线程,多线程则指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务。多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。Java将线程支持与语言运行环境结合在一起,提供了多任务并发执行的能力1.2Java的特点的特点1.2.8Java是动态的是动态的Java能够适应变化的环境,类库中允许增加新的方法以及实例变量,而客户端无需做任

10、何修改。在Java中,确定实时类型信息是简单直接的。例如那些需要从Internet上下载然后在浏览器中运行的代码。Java允许编程人员了解对象的结构和行为,这对JavaGUI构建器、调试器、可插组件和对象数据库等需要运行时刻分析对象的系统非常有用。1.3Java和和InternetJava凭借它在语言上无法比拟的优势,如安全性、平台无关性、硬件结构无关性、语言简洁、面向对象等特性成为网络编程的首选语言。在Internet的发展史中,Java影响非常深刻,是对计算机产业发展促进作用极大的一种新兴技术。Java根植于网络,网络的发展促进了Java的规范。Java在Web上的应用充分显现出它的强大功

11、能。随着Java的广发应用,Java技术对Intranet的影响日益扩大,使得Intranet的构造、应用和管理方式都发生了相应的变化。1.4JavaApplication程序程序Java程序可分为Application(应用程序)和Applet(小程序)两种类型,这两类程序的开发原理是相同的,但是运行环境有所不同,Application程序有以下主要特点:Application程序是独立完整的程序;在命令行调用独立的解释器即可运行Application程序;Application程序的主类必须有一个命名为main的方法,作为程序的入口;Application程序的图形界面需要在程序中自己构建

12、;1.4JavaApplication程序程序下面例子是一个简单的Application程序,它的功能是在字符界面上输出“ThisismyfirstJavaprogram!”【例1-1】Application程序示例:MyFirstJavaProgram.javaimportjava.io.*;publicclassMyFristJavaProgrampublicstaticvoidmain(Stringargs)System.out.println(“ThisismyfirstJavaProgram!”);1.5JavaApplet程序程序JavaApplet是另一类非常重要的Java程序,

13、它有如下特点:Applet程序不是完整的独立程序,而更像是一个已经构建好的框架程序中的一个模块;Applet程序只能在WWW浏览器环境下运行,因此还必须建立一个HTML文件来调用Applet程序;Applet程序的主类必须是java.applet.Applet类的子类;Applet程序不用在程序中构建图形界面,而是直接利用WWW浏览器提供的图形用户界面;1.5JavaApplet程序程序【例1-2】Applet程序示例,在WWW图形界面上输出“ThisismyfirstJavaApplet!”:MyFirstJavaApplet.javaimportjava.applet.Applet;imp

14、ortjava.awt.*;publicclassMyFirstJavaAppletpublicvoidpaint(Graphicsg)g.drawString(“ThisismyfirstJavaApplet!”);1.5JavaApplet程序程序因为Applet程序不能单独运行,必须要有一个HTML页面来调用它使它在WWW浏览器上运行,可以通过记事本编写以下的HTML文件内容,文件保存为Applet.html,与MyFirstJavaApplet.java的存放路径一致。SimpleGraphicsInOut1.7JDK开发工具开发工具1.7.1JDK基本命令Java工具集为开发人员提供

15、了创建和运行Java代码的命令,位于“Java安装目录bin”下。见表1-1所示。命令名称命令名称说说明明javacJava编译器,用于将Java源程序编译成字节码javaJava解释器,用于解释执行Java字节码appletviewer小应用程序浏览器,用于测试和运行Javaapplet程序javadocJava文档生成器javapJava类文件反编译器jdbJava调试器javahC文件生成器,利用此命令可以在Java类中调用C+代码jar打包工具,将相关的类文件打包成一个文件javadoc文档生成器,从源码注释中提取文档表1-1java命令1.7JDK开发工具开发工具1.7.2JDK构成

16、构成JDK目录里的基本构成:bin:包含编译器、解释器等可执行文件demo:该存放一些示例文件include:该目录存放与C相关的头文件jre:存放与java运行环境相关的文件,即JavaRuntimeEnvironment。lib:存放程序库,即java类库1.7JDK开发工具开发工具1.7.3JDK安装与配置安装与配置要编译运行Java程序,首先要安装Java运行环境,下面我们介绍如何安装JDK1.7:(1)从Oracle官网(http:/ Java的基本数据类型2.4变量变量在程序运行期间,系统可以为程序分配一块内存单元,用来存储各种类型的数据。系统分配的内存单元要使用一个标记符来标识,

17、这种内存单元中的数据是可以更改的所以叫变量。定义变量的标记符就是变量名,在内存单元中,所装载的数据就是变量值。用一个变量定义一块内存以后,程序就可以用变量名代表块内存中的数据。根据所存储数据类型的不同,有各种不向类型的变量。2.4变量变量2.4.1声明变量声明变量在使用变量之前,必须要先声明变量。声明变量,就是指定变量的数据类型。声明变量的一般格式为:,其中:(1):它可以是java的基本数据类型、对象数据类型和类。(2):定义变量的标记符。(3)方括号里的内容是可选的。我们也可以在声明的同时给该变量赋初始值,声明格式如下:=,=2.4变量变量2.4.2变量的使用变量的使用变量的使用其实非常简

18、单。当在程序的语句中,你使用到该变量的名称时,编译器就会自动将当时变量中的值拿来使用。需要将一种数据类型的值赋值给另一种不同数据类型的变量,由于数据类型有差异,在赋值时就需要进行数据类型的转换,数据转换有:自动类型转换和强制类型转换。基本数据类型中各类型数据间的优先关系,如下:低-高byte-short-char-int-long-float-double2.4变量变量2.4.3变量的作用域变量的作用域每个变量都有一个相应的可以被使用的作用范围,称这个作用范围为变量的作用域。变量在其作用域内可以通过它的变量名被引用。并且作用域也决定了系统什么时候创建变量、什么时候清除它。声明变量时,就指明了变

19、量的作用域。图2.1 Java变量的作用域2.5常量常量常量和变量一样也是用来存储数据的;但在程序运行期间,常量值是不能改变的,变量值是可以改变的。常量有两种存在方式:一种是引用Java平台所定义的;另一种是编程者自己定义。常量的定义形式如下:final=;其中:(1)是常量的名称。(2)是对应常量的具体的值。(3)final保留字用于标记所定义的值在程序编译和运行期间都不能被继承。(4)说明的类型,它可以是简单数据类型,也可以是用户定义的数据类型。2.6操作符操作符Java语言中定义了丰富的运算符。基本的运算符按功能划分,有算术运算符、关系运算符、逻辑运算符、位运算符2.6.1赋值运算符赋值

20、运算符在Java中,将等号“=”作为赋值运算符。声明变量后,可以使用赋值运算符“=”将一个表达式的值赋值给变量,语法如下:变量=表达式;在赋值语句中,左边变量的数据类型必须和右边的数据类型兼容。例如,intx=1.0是非法的,因为x的数据类型是整型int。在不使用类型转换的情况下,是不能把double值1.0赋给int变量的。2.6操作符操作符2.6.2算术运算符算术运算符算术运算符用于实现数学运算。算术运算符有:+(加),(减),*(乘),/(除),%(取余),+(递增),-(递减)。对“+”运算符和“-”运算符而言,有“前递增”、“后递增”、“前递减”和“后递减”之分。“前递增”表示“+”

21、运算符位于变量的前面;“后递增”表示“+”运算符位于变量的后面。类似地,“前递减”意味着“-”运算符位于变量的前面;“后递减”意味着“-”运算符位于变量的后面。对于前递增和前递减(如+A或-A),会先执行运算,后赋值;而对于后递增和后递减(如A+或A-),则赋值,后执行运算。2.6操作符操作符2.6.3关系运算符关系运算符关系运算符用于测试两个操作数之间的关系,形成关系表达式。关系表达式将返回一个布尔值。它们多用在控制结构的判断条件中。Java定义的关系运算符有:(大于),=(大于等于),=(小于等于),=(等于),!=(不等于)。注意:对浮点数值的比较是非常严格的。一个数值仅在小数部分与另一

22、个数值存在极微小的差异,仍然认为它们是“不相等”的。因此,通常不在两个浮点数值之间进行“等于”的比较。2.6操作符操作符2.6.4逻辑运算符逻辑运算符逻辑运算符用来进行逻辑运算。Java定义的逻辑运算符有:!(非),&(与),|(或)。若两个操作数都是true,则逻辑与运算符(&)操作输出true;否则输出false。若两个操作数至少有一个是true,则逻辑或运算符(|)操作输出true,只有在两个操作数均是false的情况下,它才会生成一个false。逻辑非运算符(!)属于一元运算符,它只对一个自变量进行操作,生成与操作数的相反的值:若输入true,则输出false;若输入false,则输出

23、true。2.6操作符操作符2.6.5位运算符位运算符位运算总体分为两类运算符:按位运算符和移位运算符。位运算符只用于整型和字符型数据。按位运算符按位运算符按位与运算(&)、按位或运算(|)、按位异或运算()按位取反运算()移位运算符移位运算符左移位运算符(与)运算符()执行一个右移位(带符号),左边按符号位补0或1。2.6操作符操作符2.6.6其他运算符其他运算符赋值运算符(=),使用的形式是:A=4条件运算符(?),使用的形式是:x?y:z;instanceof运算符:对象运算符instanceof用来判断一个对象是否是某一个类或者其子类的实例。()和运算符,括号运算符()的优先级是所有运

24、算符中最高;方括号运算符是数组运算符。运算符,运算符用于访问对象实例或者类的类成员函数。new运算符,用于创建一个新的对象或者新的数组。2.6操作符操作符2.6.7运算符优先级与结合性运算符优先级与结合性在Java语言中,规定了运算符的优先级和结合性。优先级是指同一表达式中多个运算符被执行的次序,在表达式求值时,先按运算符的优先级别由高到低的次序执行。结合性是指当一个运算对象两侧的运算符优先级别相同时,按规定的“结合方向”来处理。表2-3列出了各个运算符的优先级别和结合性,优先级的数字越小表示优先级别越高,初学者在使用运算符时可以经常参考。运算符运算符优先级优先级结合性结合性括号运算符:()1

25、自左至右方括号运算符:1自左至右一元运算符:!、+(正号)、-(负号)2自左至右位运算符:2自左至右递增、递减运算符:+、-2自左至右算术运算符:*、/、%3自左至右算术运算符:+、-4自左至右位左移、位右移运算符:5自左至右关系运算符:、=、=6自左至右关系运算符:=、!=7自左至右位运算符:&8自左至右位运算符:9自左至右位运算符:|10自左至右逻辑运算符:&11自左至右逻辑运算符:|12自左至右条件运算符:?:13自右至左(复合)赋值运算符:=、+=、-=、*=、/=、%=14自右至左表2-3 运算符的优先级别与结合性2.7控制语句在Java语言程序设计中,通过控制语句实现执行流程的控制

26、,完成一定的任务。流程是由若干个语句组成的,语句可以是单一的一条语句,如c=a+b,也可以是用大括号括起来的一个复合语句。Java中的控制语句有以下几类:分支语句:if-else,switch循环语句:while,do-while,for与程序转移有关的跳转语句:break,continue,return2.7控制语句2.7.1分支语句分支语句1.if语句if语句的基本格式如下:if()elseelse子句是可选项,换句话说,一个if语句可以有else子句,也可以没有else子句。图2.2if-else结构示意图2.7控制语句2.7.1分支语句分支语句2.switch语句在多个条件选择时,可以

27、使用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.4for循环结构示意图2.7控制语句2.7.2循环语句循环语句while语句语句格式如下

28、:while()先判断是否成立:若成立,则执行,继续循环操作;若不成立,则停止循环。图2.5while循环结构示意图2.7控制语句2.7.2循环语句循环语句do-while语句语句格式如下:dowhile()其执行顺序是:先执行,后判断是否成立:若成立,则继续循环操作;若不成立,则停止循环。图2.5do-while循环结构示意图2.7控制语句2.7.3与程序转移有关的跳转语句与程序转移有关的跳转语句(1)break语句语句break语句有两种使用方法:第一种,break语句出现在switch语句或循环体时,使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句;第二种,在Java中

29、,可以为每个代码块加一个括号,一个代码块通常是用大括号括起来的一段代码。加标号的格式如下:块名:语句块break语句的第二种使用情况就是跳出它所指定的块,并从紧跟该块的第一条语句处执行。例如:break块名;2.7控制语句2.7.3与程序转移有关的跳转语句与程序转移有关的跳转语句(2)continue语句语句continue语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。continue语句只可能出现在循环语句(while、do-while和for循环)的循环体中。同break语句一样,continue语句也可以跳转到一个标签处。请看下面的例子

30、,注意其中continue语句与break语句在循环中的区别。2.7控制语句2.7.3与程序转移有关的跳转语句与程序转移有关的跳转语句(3)return语句语句return语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:return表达式;/return;return语句通常用在一个方法体的最后,否则会产生编译错误,除非用在if-else语句中。Java程序设计(第二版)第第3章章字符串和数组字符串和数组本章介绍Java处理字符串和数组。字符串由一系列字符组成,这些字符可视为一个单元。本章将详细讨论java.lang包中的Strin

31、g类、StringBuffer类和java.util包中StringTokenizer类的功能。数组是相同类型的相关数据项组成的数据结构,本章主要讨论一维数组和多维数组的使用。本章要点:熟练处理字符串;掌握数组的定义、创建及使用。3.1字符串字符串前面介绍的,但由于单个字符char类型所蕴含的信息太少,不适合大量信息处理,当把一个个字符组合在一起时,就可以包括更多新的含义,这就形成新的数据类型字符串。字符串一直是程序设计的主要内容,也是容易出现错误的地方。这里介绍java语言所提供的3种常用字符串类:String类(字符串类);StringBuffer类(字符串缓冲器);StringToken

32、izer类(词法分析器类)。3.1字符串字符串3.1.1String类类在前面的学习中,我们已经用过字符串,如println(Strings)方法中的参数。该方法的功能是通过Java解释器将要输出的内容转化成一个String对象,再把它传给println方法输出。Java语言使用java.lang.String类处理字符串。(1)构造一个字符串构造一个字符串字符串常量是用双引号括住的一串字符。如“welcometojava!”。要创建一个字符串,需要用到下面的语法:String字符串变量名=newString(字符串常量);另外Java还提供了一个简单的创建字符串的简单语法:String字符串

33、变量名=字符串常量。3.1字符串字符串(2).常用方法常用方法返回字符串长度的方法:publicintlength()返回指定位置字符的方法:publiccharcharAt(intindex)把字符串中指定内容拷贝到字符数组的方法:publicvoidgetChars(intsrcBegin,intsrcEnd,chardst,intdstBegin)比较两个字符串是否相等的方法:publicbooleanequals(ObjectanObject)3.1字符串字符串(2).常用方法常用方法比较两个字符串在不区分大小写时是否相等的方法:publicbooleanequalsIgnoreCas

34、e(ObjectanObject)比较两个字符串大小的方法:publicintcompareTo(ObjectanObject)检查在指定范围内是否有指定前缀内容的方法:publicStringstartWith(Stringpre,inttoffset)连接两个字符串的方法:publicStringconcat(Stringstr)3.1字符串字符串(2).常用方法常用方法返回指定字符和指定字符串在字符串中第一次出现的位置值的方法:publicStringindexOf(charch)publicStringindexOf(Stringstr)在字符串中使用指定字符进行替换的方法:publi

35、cStringreplace(charoldchar,charnewChar)取子串的方法:publicStringsubstring(intstart,intend)把字符串中字符转换为大小写的方法:publicStringtoUpperCase()publicStringtoLowerCase()3.1字符串字符串3.1.2StringBuffer类类字符串一旦创建,它的值就固定了,但在实际应用中,经常需要对字符串的内容做动态的修改,java语言中String类的替代品StingBuffer类(字符串缓冲器类型)可以实现该操作。StingBuffer类比String类更灵活,可以在字符串缓

36、冲区中添加、插入、追加新内容。(1)构造一个字符缓冲区StringBuffer();/*分配16个字符的缓冲区*/StringBuffer(intlen);/*分配len个字符的缓冲区*/StringBuffer(Strings);/*除了按照s的大小分配空间外,再分配16个字符的缓冲区*/3.1字符串字符串3.1.2StringBuffer类类(1)常用方法常用方法获得字符串长度的方法:publicintlength()重新设置字符串长度的方法:publicvoidsetLength(intnewLength)返回当前缓冲区容量的方法publicintcapacity()在字符串添加新内容的

37、方法:publicStringBufferappend(Stringstr)3.1字符串字符串3.1.2StringBuffer类类(1)常用方法常用方法删除字符串指定内容的方法:publicStringBufferdelet(intstart,intend)使用字符串替换指定内容的方法:publicStringBufferreplace(intstart,intend,Stringstr)在指定位置插入字符串的方法:publicStringBufferinsert(intoffset,Stringstr)反转字符串内容的方法:publicStringBufferreverse();3.1字符

38、串字符串3.1.3StringTokenizer类类java.util.StringTokenizer类可以将一个串分成小片,以便提取和处理其中的信息。如果想得到一个串的全部单词,比如该串为”IamlearningJavanow”,可以为它创建一个StringTokenizer类的实例,然后用StringTokenizer类中的方法提取单个单词。(1)构造字符串词法分析器构造字符串词法分析器publicStringTokenizer(Stringstr);/*构造一个字符串且采用默认分隔符的词法分析器*/publicStringTokenizer(Stringstr,Stringdelim);

39、/*构造一个指定字符串和分隔符的词法分析器*/publicStringTokenizer(Stringstr,Stringdelim,booleanreturnDelims);/*构造一个指定字符串和分隔符且返回分隔符的词法分析器*/3.1字符串字符串3.1.3StringTokenizer类类(2)常用方法测试是否还有分析出来的单词:publicbooleanhasMoreTokens();返回下一个单词:publicStringnextToken();返回分析出来的单词个数publicintcountTokens();StringTokenizer对象时,可以指定一套定界符号识别每一个单词

40、。定界符把串分成为令牌的小片。3.1字符串字符串3.1.4Character类类Character类是对单个字符进行操作。publicCharacter(char)/以造一个Character对象。2.常用方法常用方法publicStringtoString(),当前Character对象转换成字符串。publicintcompareTo(CharacteranotherCharacter),当前Character对象与anotherCharacter比较。相等关系返回;小于关系返回负数;大于关系返回正数。publicstaticbooleanisUpperCase(charc)或isLowe

41、rCase(charc),判断字符c是否为大写字母或小写字母publicstaticBooleanisLetter(charch)判断字符ch是否为字母3.2数组数组当我们需要存储一组数据时,由于为每一个数据声明一个变量来存放是不可能的。因此,我们需要一个更高效组织数据的方法,这就是将要介绍的数组。数组是一种最简单的复合数据类型,是多个相同数据类型数据的组合,它的出现实现了对这些相同数据的统一管理。Java将数组作为对象处理,有一维数组和多维数组之分。3.2数组数组3.2.1一维数组一维数组1一维数组的声明;其中,这里数据类型可以是基本数据类型,也可以是以后我们将要学到的对象数据类型。数组名是

42、一个标识符,“”指明了该变量是一个数组类型变量。3.2数组数组3.2.1一维数组一维数组2.一维数组的创建和初始化创建数组指的是在声明数组之后为数组分配存储空间,同时对数组中的元素执行初始化。因为定义一维数组后,在没有初始化之前,数组是不能被引用的,所以在使用数组之前必须进行初始化。初始化的方式有两种:静态方式:=;动态方式:=new;。3.2数组数组3.2.1一维数组一维数组3对数组的操作(1)对数组元素的引用数组创建后就可以直接引用了,一般情况下只能对数组元素逐个引用而不能一次引用整个数组。在程序中使用数组元素和使用同类型的普通变量一样,格式如下:下标其中,下标是非负的整型常数或表达式。数

43、组的下标从0开始编号,直到数组的最后一个元素,即数组的长度减1。如:intsum=newint3;定义了数组sum有3个元素,它们分别为:sum0,sum1,sum2。3.2数组数组3.2.1一维数组一维数组(2)数组的长度每个数组都有一个属性length指明它的长度(可以容纳元素的个数),如:intArray.length指明数组intArray的长度。java运行时系统时,会对数组下标进行越界检查,因此下标值必须在指定的范围内:0intArray.length。,数组的最大下标值为length-1,以保证安全性;如有越界将产生下标越界(ArrayIndexOutOfBoundexcepti

44、on)的编译错误。另外java中的数组一旦创建,大小就不可以改变了。但是,可以为数组重新分配空间,这样原来数组元素的值将被清除。它还是独立的类,有自身的方法和属性。3.2数组数组3.2.1一维数组一维数组(3)数组的复制在Java中,在两个数组间使用赋值语句(=),例如:newArray=array;这两个数组名指向的都是同一数组,改变newArray数组元素的值,array数组元素的值也会随之改变。因为数组名存放的是一个引用地址(为数组分配的存储空间的首地址),是一个地址常量。如果把数组名赋值给另一个数组名时,传送的是地址,这样两个数组名指向同一个地址,实际上是给同一个数组取两个名字。如果改

45、变其中一个数组的内容,另一个也会改变。3.2数组数组实现数组复制有下面三种方法:用循环语句复制数组的每个元素,如:for(inti-0;iintArray.length;i+)targetArrayi=intArrayi;使用Object类的clone方法,如:inttargetArray=(int)intArray.clone();使用System类中的静态方法arrycopy:System.arraycopy(sourceArray,offset1,targetArray,offset2,number)其中,sourceArray和targetArray是源数组和目标数组名,它们必须是已经

46、初始化的数组。Offset1和offset2分别是源数组和目标数组操作的起始下标,number表示要复制的元素的个数。3.2数组数组3.2.2多维数组多维数组前面,我们已经学会了如何使用一维数组。但如果需要表示更复杂的数据,如矩阵或表格,因此我们需要使用二维数组了。在java语言中,没有真正的多维数组,多维数组被看成是“数组的数组”。1.二维数组的声明二维数组的声明;与一维数组一样,声明数组时,系统并没有为数组分配存储空间,因此不能指定各维的长度。用new关键字来创建数组后,系统才为数组分配存储空间。3.2数组数组3.2.2多维数组多维数组2.二维数组的创建二维数组的创建直接为每一维分配空间:

47、如:chara=newchar32;java首先把数组a看做是一维的字符型数组,一维数组a有3个(行标)元素,每个元素的值又是一个一维数组,每一个这样的一维数组又分别都有2个(列标)元素。从最高维开始分别为每一维分配空间:如:chara=newchar3;/最高维表明数组是一个含3个元素的一维数组3.2数组数组3.2.2多维数组多维数组2.二维数组的初始化与引用对二维数组中的初始化有两种方法:直接为每个元素赋值:inta=newint22;a00=1;a01=2;a10=3;a11=4;在声明的同时进行初始化:inta=1,2,3,4;对二维数组的引用,其引用方式为:数组名下标1下标2;其中,

48、下标1、下标2为非负的整型常数或表达式。下标取值都从0开始。3.3排序排序是将一组数据依照一定得顺序排列起来。最常见的排序是“从小到大”递增排序和“从大到小”递减排序。在JAVA中在运用数组进行排序功能时,常用的排序算法有:选择排序法、插入排序法、冒泡法。3.3排序3.3.1选择排序算法思想:首先从数组中选择出最大值(或最小值)放在第一个(或最后一个)位置,然后再从数组里剩下的元素里选择出最大值(或最小值)放在第二个(或倒数第二)位置,最后以此类推,直到剩下一个数为止。3.3.1 选择排序选择排序for(inti=0;iarr.length-1;i+)min=i;for(intj=i+1;ja

49、rrj)min=j;if(min!=i)temp=arrmin;arrmin=arri;arri=temp;3.3排序3.3.2插入排序算法思想:先将无序序列中的第一个值去除作为关键值,然后将其放入有序序列(即作为新序列的第一个值),然后取第二个值作为关键值,将关键值放入有序序列,并与第一个值进行比较,若小于第一个值,则将这个关键值插入到第一个值前面(交换),后面依次取值然后和前面的有序序列中的值进行比较,插入到合适位置。3.3.2插入排序插入排序publicstaticvoidsort(Comparabledata)intlen=data.length;for(inti=1;i0&datat

50、emp-pareTo(currentData)0)datatemp=datatemp-1;temp-;datatemp=currentData;3.3排序3.3.3冒泡排序算法思想:n个数,将第一个和第二个进行比较,将大的放在第二个位置,再将第二个和第三比较,大的放在第三个位置,依次向后比较,比较n-1次,将最大的放在最后(n的位置),然后再从第一个开始比较,比较n-2次,这次把最大的放到第n-1个位置,然后再来回比较.遵循第i次遍历就从第一个数开始比较n-i次,将最后的值放在第n-i+1的位置3.3.3 冒泡排序冒泡排序public static void sort(Comparable d

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

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

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁