jave培训:数组及字符处理.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《jave培训:数组及字符处理.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jave 培训 数组 字符 处理
- 资源描述:
-
1、第四讲第四讲 数组及字符处理数组及字符处理1、数组(Array)2、字符处理(String)第1页,共48页。1、数组、数组一维数组:定义一维数组:定义一维数组的定义方式为:type arrayName;其中类型(type)可以为Java中任意的数据类型,包 括简单类型和组合类型,数组名arrayName为一个 合法的标识符,指明该变量是一个数组类型变量。例如:int intArray;声明了一个整型数组,数组中的每个元素为整型数据。第2页,共48页。我们还可以定义一个复合类型的数组,例如:Date dateArray;声明了一个容纳复合数据类型Date的数组。与C、C+不同,Java在数组的
2、定义中并不为数组元素分配内存,因此 中不用指出数组中元素的个数,即数组长度,而且对于如上定义的一个数组是不能访问它的任何元素的。必须经过初始化后,才能应用数组的元素。1、数组、数组一维数组:定义一维数组:定义第3页,共48页。除了这种定义数组的方式之外,java语言还提供了其他的定义形式,如下所示:type arrayName;对于以上举出的例子,我们也可以这样定义:int intArray;Date dateArray;1、数组、数组一维数组:定义一维数组:定义第4页,共48页。一维数组定义之后,必须经过初始化才可以引用。数组的初始化分为静态初始化和动态初始化两种:静态初始化:静态初始化:在
3、定义数组的同时对数组元素进行初始化,例如:int intArray=1,2,3,4;/定义了一个含有4个 /元素的int型数组。1、数组、数组一维数组:初始化一维数组:初始化第5页,共48页。动态初始化:动态初始化:使用运算符new为数组分配空间,对于简单类型的数组,其格式如下:type arrayName=new typearraySize;type arrayName=new typearraySize;对于复合类型的数组,需要经过两步空间分配。首先:type arrayName=new typearraySize;然后:arrayName0=new type(paramList);arr
4、ayNamearraySize-1=new type(paramList);1、数组、数组一维数组:初始化一维数组:初始化第6页,共48页。例如:例如:String stringArrar;/定义一个String类型的数组stringArray=new String3;/给数组stringArray分配3个应用 /空间,初始化每个引用值为nullstringArray0=new String(“how”);stringArray1=new String(“are”);stringArray2=new String(“you”);初始化各数组元素1、数组、数组一维数组:初始化一维数组:初始化第7
5、页,共48页。当定义了一个数组,并用运算符new为它分配了内存空间后,就可以引用数组中的每一个元素了。元素的引用方式为:arrayNameindex index为数组下标,可以是整型常数或表达式,如:arrayName1,arrayNamei,arrayName6*i等。下标是0序的,即从0开始,一直到数组长度减1。1、数组、数组一维数组:引用一维数组:引用第8页,共48页。另外,与C、C+中不同,Java对数组元素要进行越界检查以保证安全性。同时,对于每个数组都有一个属性length指明它的长度,例如:intArray.length指明数组intArray的长度。1、数组、数组一维数组:边界
6、检查一维数组:边界检查第9页,共48页。public class ArrayTest public static void main(String args )int i;int a =new int5;for(i=0;i=0;i-)System.out.println(a+i+=+ai);该程序对数组中的每个元素赋值,然后按逆序输出。1、数组、数组一维数组:示例一维数组:示例第10页,共48页。运行结果为:C:java ArrayTest a4=4a3=3 a2=2 a1=1a0=01、数组、数组一维数组:示例一维数组:示例第11页,共48页。在任何语言中,多维数组都被看作数组的数组。比如二
7、维数组是一个特殊的一维数组,其每一个元素又是一个一维数组。我们主要以二维数组为例来说明,高维数组与此类似。1、数组、数组多维数组多维数组第12页,共48页。二维数组的定义方式 type arrayName ;例如:int intArray ;也可以采用另一种定义方式:type arrayName;与一维数组一样,这时对数组元素也没有分配内存空间,同样要使用运算符new来分配内存,然后才可以访问每个元素。1、数组、数组二维数组:定义二维数组:定义第13页,共48页。二维数组的初始化也分为静态和动态两种。静态初始化:静态初始化:在定义数组的同时为数组分配空间。int intArray =1,2,2
8、,3,3,4;不必指出数组每一维的大小,系统会根据初始化时给出的初始值的个数自动算出数组每一维的大小。1、数组、数组二维数组:初始化二维数组:初始化第14页,共48页。动态初始化:动态初始化:对高维数组来说,分配内存空间有下面两种方法:1.直接为每一维分配空间,如:type arrayName =new typearraylength1arraylength2例如:int a =new int23;1、数组、数组二维数组:初始化二维数组:初始化第15页,共48页。2.从最高维开始(而且必须从最高维开始),分别为每一维分配空间,如:String s =new String2;s0=new Str
9、ing2;s1=new String3;s00=new String(“Good”);s01=new String(“Luck”);s10=new String(“to”);s11=new String(“you”);s12=new String(“!”);1、数组、数组二维数组:初始化二维数组:初始化第16页,共48页。二维数组的引用二维数组的引用 对二维数组中每个元素,引用方式为:arrayNameindex1index2 其中index1和index2为数组下标,为整型常数和表达式,都是0序的。二维数组举例二维数组举例 两个矩阵相乘,参照参考书在课余时间上机练习。1、数组、数组二维数组:
10、引用及示例二维数组:引用及示例第17页,共48页。n数组是用来表达一组同类型数据的数据结构n在Java中数组是定长的,数组的大小不会动态变化n数组变量的值是数组对象实例的引用n在java.util包中的Arrays类提供了一些操作数组的方法n在java.util包中的Vector提供了动态变长数组的功能,Vector的容量可以随着需要变化1、数组、数组java.util.Arrays第18页,共48页。nint binarySearch(type a,type key)n数组a必须已经排序,否则返回值无意义n当数组a中有重复的值时,该方法返回的值不确定n如果key存在,则返回它在数组a中的位置
11、n如果不存在,则返回它的“-(插入位置-1)”nvoid fill(type a,type val)void fill(type a,int fromIndx,int toIndex,type val)n包括afromIndx,但不包括atoIndexnfromIndx=toIndex时,范围是一个空的范围1、数组、数组java.util.Arrays第19页,共48页。nboolean equals(type a,type a2)n两个数组大小相同,并且每一个元素相等n两个null数组是相等的1、数组、数组java.util.Arrays第20页,共48页。nvoid sort(type a
12、)void sort(type a,int fromIndx,int toIndex)void sort(type a,Comparator c)void sort(type a,int fromIndx,int toIndex,Comparator c)n包括afromIndx,但不包括atoIndexnfromIndx=toIndex时,范围是一个空的范围n排序算法都具有n*log(n)的计算复杂性,效率高n排序算法都保证稳定,即排序算法不会改变相等元素的顺序n对不同类型的数组,算法的实现并不完全相同n可以用自己的Comparator对象声明自定义的顺序1、数组、数组java.util.A
13、rrays第21页,共48页。njava.lang.Systemnvoid arraycopy(Object src,int src_position,Object dst,int dst_position,int length)n范围不能越界n可对任何同类型的数组进行复制n数组复制过程中做严格的类型检查数组复制过程中做严格的类型检查n更详细的内容参见JDK文档1、数组、数组数组的复制数组的复制第22页,共48页。3、字符串、字符串 字符串是字符的序列,它是组织字符的基本数据结构,从某种程度上来说有些类似于字符的数组。在Java中,字符串被当作对象来处理。程序中需要用到的字符串可以分为两大类,
14、一类是创建之后不会再做修改和变动的字符串常量字符串常量;另一类是创建之后允许再做更改和变化的字符串变量字符串变量。对于字符串常量,由于程序中经常需要对它做比较,搜索之类的操作,所以通常把它放在一个具有一定名称的对象之中,由程序对该对象完成上述操作。在Java中,存放字符串常量的对象用String类,对于字符串变量,由于程序中经常需要对它做添加,插入,修改等操作,一般存放在StringBuffer类的对象中。第23页,共48页。3、字符串、字符串String字符串常量使用双引号括住的一串字符,比如:Hello world!Java编译器自动为每一个字符串常量生成一个String类 的实例,因此可
15、以用字符串常量直接初始化一个String对 象,如:String s=Hello world!;第24页,共48页。要创建类String的一个对象并进行初始化,需要调用类String的构造方法。类String中提供了下面的一些构造方法:String():无参数的缺省的构造方法用来创建一个空串。String s=new String();String(String value):利用已经存在的字符串常量创建一个新的String对象,该对象的内容与给出的字符串常量一致。String s=new String(“hello”);String(char value ):通过给构造方法传递一个字符数组可
16、以创建一个非空串。char chars =a,b,c;String s=new String(chars);3、字符串、字符串String:创建:创建第25页,共48页。String(char ,int startIndex,int numChars):这种方法用来创建一个非空串,并且指明所创建的字符串在字符数组中的起始地址以及所包含的字符个数。char chars=a,b,c,d,e,f;String s=new String(chars,2,3);该方法生成的串s为“cde”。(注意数组的下标从0开始)3、字符串、字符串String:创建:创建第26页,共48页。String(byte m
17、ybyte,byte hibyte):因为在Internet上,格式采用八位的ASCII码,所以Java的类String提供了从byte型数组进行初始化的构造方法。其中hibyte指明各字符的高位字节,对于通常所用的ASCII码,必须将高位字节声明为零,而其他的非拉丁文字符则置为非零。byte mybyte =97,98,99;String s=new String(mybyte,0);该方法构造的字符串s是“abc”。3、字符串、字符串String:创建:创建第27页,共48页。String(byte mybyte,byte hibyte,int startIndex,int numChar
展开阅读全文