jave培训:数组及字符处理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第四讲数组及字符处理1、数组(Array)2、字符处理(String)1、数组——一维数组:定义一维数组的定义方式为:typearrayName[];其中类型(type)可以为Java中任意的数据类型,包括简单类型和组合类型,数组名arrayName为一个合法的标识符,[]指明该变量是一个数组类型变量。例如:intintArray[];声明了一个整型数组,数组中的每个元素为整型数据。我们还可以定义一个复合类型的数组,例如:DatedateArray[];声明了一个容纳复合数据类型Date的数组。与C、C++不同,Java在数组的定义中并不为数组元素分配内存,因此[]中不用指出数组中元素的个数,即数组长度,而且对于如上定义的一个数组是不能访问它的任何元素的。必须经过初始化后,才能应用数组的元素。1、数组——一维数组:定义除了这种定义数组的方式之外,java语言还提供了其他的定义形式,如下所示:type[]arrayName;对于以上举出的例子,我们也可以这样定义:int[]intArray;Date[]dateArray;1、数组——一维数组:定义一维数组定义之后,必须经过初始化才可以引用。数组的初始化分为静态初始化和动态初始化两种:静态初始化:在定义数组的同时对数组元素进行初始化,例如:intintArray[]={1,2,3,4};//定义了一个含有4个//元素的int型数组。1、数组——一维数组:初始化动态初始化:使用运算符new为数组分配空间,对于简单类型的数组,其格式如下:typearrayName[]=newtype[arraySize];type[]arrayName=newtype[arraySize];对于复合类型的数组,需要经过两步空间分配。首先:typearrayName[]=newtype[arraySize];然后:arrayName[0]=newtype(paramList);…arrayName[arraySize-1]=newtype(paramList);1、数组——一维数组:初始化例如:StringstringArrar[];//定义一个String类型的数组stringArray=newString[3];//给数组stringArray分配3个应用//空间,初始化每个引用值为nullstringArray[0]=newString(“how”);stringArray[1]=newString(“are”);stringArray[2]=newString(“you”);初始化各数组元素1、数组——一维数组:初始化当定义了一个数组,并用运算符new为它分配了内存空间后,就可以引用数组中的每一个元素了。元素的引用方式为:arrayName[index]index为数组下标,可以是整型常数或表达式,如:arrayName[1],arrayName[i],arrayName[6*i]等。下标是0序的,即从0开始,一直到数组长度减1。1、数组——一维数组:引用另外,与C、C++中不同,Java对数组元素要进行越界检查以保证安全性。同时,对于每个数组都有一个属性length指明它的长度,例如:intArray.length指明数组intArray的长度。1、数组——一维数组:边界检查publicclassArrayTest{publicstaticvoidmain(Stringargs[]){inti;inta[]=newint[5];for(i=0;i5;i++){a[i]=i;}for(i=a.length-1;i=0;i--){System.out.println(a[+i+]=+a[i]);}}}该程序对数组中的每个元素赋值,然后按逆序输出。1、数组——一维数组:示例运行结果为:C:\javaArrayTesta[4]=4a[3]=3a[2]=2a[1]=1a[0]=01、数组——一维数组:示例在任何语言中,多维数组都被看作数组的数组。比如二维数组是一个特殊的一维数组,其每一个元素又是一个一维数组。我们主要以二维数组为例来说明,高维数组与此类似。1、数组——多维数组二维数组的定义方式typearrayName[][];例如:intintArray[][];也可以采用另一种定义方式:type[][]arrayName;与一维数组一样,这时对数组元素也没有分配内存空间,同样要使用运算符new来分配内存,然后才可以访问每个元素。1、数组——二维数组:定义二维数组的初始化也分为静态和动态两种。静态初始化:在定义数组的同时为数组分配空间。intintArray[][]={{1,2},{2,3},{3,4}};不必指出数组每一维的大小,系统会根据初始化时给出的初始值的个数自动算出数组每一维的大小。1、数组——二维数组:初始化动态初始化:对高维数组来说,分配内存空间有下面两种方法:1.直接为每一维分配空间,如:typearrayName[][]=newtype[arraylength1][arraylength2]例如:inta[][]=newint[2][3];1、数组——二维数组:初始化2.从最高维开始(而且必须从最高维开始),分别为每一维分配空间,如:Strings[][]=newString[2][];s[0]=newString[2];s[1]=newString[3];s[0][0]=newString(“Good”);s[0][1]=newString(“Luck”);s[1][0]=newString(“to”);s[1][1]=newString(“you”);s[1][2]=newString(“!”);1、数组——二维数组:初始化二维数组的引用对二维数组中每个元素,引用方式为:arrayName[index1][index2]其中index1和index2为数组下标,为整型常数和表达式,都是0序的。二维数组举例两个矩阵相乘,参照参考书在课余时间上机练习。1、数组——二维数组:引用及示例数组是用来表达一组同类型数据的数据结构在Java中数组是定长的,数组的大小不会动态变化数组变量的值是数组对象实例的引用在java.util包中的Arrays类提供了一些操作数组的方法在java.util包中的Vector提供了动态变长数组的功能,Vector的容量可以随着需要变化1、数组——java.util.ArraysintbinarySearch(typea[],typekey)数组a必须已经排序,否则返回值无意义当数组a中有重复的值时,该方法返回的值不确定如果key存在,则返回它在数组a中的位置如果不存在,则返回它的“-(插入位置-1)”voidfill(typea[],typeval)voidfill(typea[],intfromIndx,inttoIndex,typeval)包括a[fromIndx],但不包括a[toIndex]fromIndx==toIndex时,范围是一个空的范围1、数组——java.util.Arraysbooleanequals(typea[],typea2[])两个数组大小相同,并且每一个元素相等两个null数组是相等的1、数组——java.util.Arraysvoidsort(typea[])voidsort(typea[],intfromIndx,inttoIndex)voidsort(typea[],Comparatorc)voidsort(typea[],intfromIndx,inttoIndex,Comparatorc)包括a[fromIndx],但不包括a[toIndex]fromIndx==toIndex时,范围是一个空的范围排序算法都具有n*log(n)的计算复杂性,效率高排序算法都保证稳定,即排序算法不会改变相等元素的顺序对不同类型的数组,算法的实现并不完全相同可以用自己的Comparator对象声明自定义的顺序1、数组——java.util.Arraysjava.lang.Systemvoidarraycopy(Objectsrc,intsrc_position,Objectdst,intdst_position,intlength)范围不能越界可对任何同类型的数组进行复制数组复制过程中做严格的类型检查更详细的内容参见JDK文档1、数组——数组的复制3、字符串字符串是字符的序列,它是组织字符的基本数据结构,从某种程度上来说有些类似于字符的数组。在Java中,字符串被当作对象来处理。程序中需要用到的字符串可以分为两大类,一类是创建之后不会再做修改和变动的字符串常量;另一类是创建之后允许再做更改和变化的字符串变量。对于字符串常量,由于程序中经常需要对它做比较,搜索之类的操作,所以通常把它放在一个具有一定名称的对象之中,由程序对该对象完成上述操作。在Java中,存放字符串常量的对象用String类,对于字符串变量,由于程序中经常需要对它做添加,插入,修改等操作,一般存放在StringBuffer类的对象中。3、字符串——String字符串常量使用双引号括住的一串字符,比如:Helloworld!Java编译器自动为每一个字符串常量生成一个String类的实例,因此可以用字符串常量直接初始化一个String对象,如:Strings=Helloworld!;要创建类String的一个对象并进行初始化,需要调用类String的构造方法。类String中提供了下面的一些构造方法:String():无参数的缺省的构造方法用来创建一个空串。Strings=newString();String(Stringvalue):利用已经存在的字符串常量创建一个新的String对象,该对象的内容与给出的字符串常量一致。Strings=newString(“hello”);String(charvalue[]):通过给构造方法传递一个字符数组可以创建一个非空串。charchars[]={‘a’,‘b’,‘c’};Strings=newString(chars);3、字符串——String:创建String(char[],intstartIndex,intnumChars):这种方法用来创建一个非空串,并且指明所创建的字符串在字符数组中的起始地址以及所包含的字符个数。charchars[]={'a','b','c','d','e','f'};Strings=newString(chars,2,3);该方法生成的串s为“cde”。(注意数组的下标从0开始)3、字符串——String:创建String(bytemybyte[],bytehibyte):因为在Internet上,格式采用八位的ASCII码,所以Java的类String提供了从byte型数组进行初始化的构造方法。其中hibyte指明各字符的高位字节,对于通常所用的ASCII码,必须将高位字节声明为零,而其他的非拉丁文字符则置为非零。bytemybyte[]={97,98,99};Strings=newString(mybyte,0);该方法构造的字符串s是“abc”。3、字符串——String:创建String(bytemybyte[],bytehibyte,intstartIndex,intnumChars):这种构造方法与String(char[],intstartIndex,intnumChars)类似,只是初始化的数组类型不同。bytemybyte[]={80,81,82,83,84,85};Strings=newString(mybyte,0,2,3);该方法构造的字符串s是“RST”。String(StringBufferbuffer):这个构造函数利用一个已经存在的StringBuffer对象为新建的String对象初始化。3、字符串——String:创建1.lengthpublicintlength()此方法返回字符

1 / 47
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功