《第四章Java 数组与字符串.ppt》由会员分享,可在线阅读,更多相关《第四章Java 数组与字符串.ppt(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、JavaJava语言程序设计语言程序设计第四章第四章 数组与字符串数组与字符串1 1、数组数组一维数组:说明一维数组:说明一维数组的说明方式为:一维数组的说明方式为:type type arrayNamearrayName ;其中类型其中类型(type)(type)可以为可以为JavaJava中任意的数据类型,包中任意的数据类型,包 括简单类型和组合类型,数组名括简单类型和组合类型,数组名arrayNamearrayName为一个为一个 合法的标识符,合法的标识符,指明该变量是一个数组类型变量。指明该变量是一个数组类型变量。例如:例如:intint intArrayintArray ;声明了一
2、个整型数组,数组中的每个元素为整型数据。声明了一个整型数组,数组中的每个元素为整型数据。我们还可以定义一个复合类型的数组,例如:我们还可以定义一个复合类型的数组,例如:Date Date dateArraydateArray ;声明了一个容纳复合数据类型声明了一个容纳复合数据类型DateDate的数组。的数组。与与C C、C+C+不同,不同,JavaJava在数组的说明中并不为在数组的说明中并不为数组元素分配内存,因此数组元素分配内存,因此 中不用指出数组中元中不用指出数组中元素的个数,即数组长度,而且对于如上说明的一素的个数,即数组长度,而且对于如上说明的一个数组是不能访问它的任何元素的。必
3、须经过初个数组是不能访问它的任何元素的。必须经过初始化后,才能应用数组的元素。始化后,才能应用数组的元素。1、数组数组一维数组:说明一维数组:说明 除了这种说明数组的方式之外,除了这种说明数组的方式之外,javajava语言还提语言还提供了其他的说明形式,如下所示:供了其他的说明形式,如下所示:type type arrayNamearrayName;对于以上举出的例子,我们也可以这样定义:对于以上举出的例子,我们也可以这样定义:intint intArrayintArray;Date Date dateArraydateArray;1、数组数组一维数组:说明一维数组:说明n一旦说明了数组变量
4、,便可定义它能引用一旦说明了数组变量,便可定义它能引用的数组。的数组。intint primes;primes;primes=new int10;primes=new int10;这条语句建立了能存储这条语句建立了能存储1010个个intint型值的数型值的数组,并且在组,并且在primesprimes变量中纪录了对数组的变量中纪录了对数组的引用。该引用即数组在内存中的位置或地引用。该引用即数组在内存中的位置或地址。址。1、数组数组一维数组:定义数组一维数组:定义数组n注意:注意:n对数组的说明(对数组的说明(declaration)只是定义变)只是定义变量名,没有为数组本身分配任何存储空间,
5、量名,没有为数组本身分配任何存储空间,同时也没有定义元素的个数。同时也没有定义元素的个数。n语句语句 intint primes=new int10;primes=new int10;是对是对primesprimes这个数组变量的声明,也是对该这个数组变量的声明,也是对该数组的定义数组的定义(definition)(definition)1、数组数组一维数组:定义数组一维数组:定义数组n数组变量和数组本身是分离开的数组变量和数组本身是分离开的 intint primes=new int10;primes=new int10;primes=new int50;primes=new int50;1
6、、数组数组重用数组变量重用数组变量一维数组说明之后,必须经过初始化才可以引用。一维数组说明之后,必须经过初始化才可以引用。数组的初始化分为数组的初始化分为静态初始化静态初始化和和动态初始化动态初始化两种:两种:静态初始化:在定义数组的同时对数组元素进静态初始化:在定义数组的同时对数组元素进行初始化,例如:行初始化,例如:int intArray=1,2,3,4;/定义了一个定义了一个含有含有4个元素的个元素的int型数组。型数组。1、数组、数组一维数组:初始化一维数组:初始化 动态初始化:动态初始化:使用运算符使用运算符newnew为数组分配空间,对于简为数组分配空间,对于简单类型的数组,其格
7、式如下:单类型的数组,其格式如下:type type arrayNamearrayName=new =new typearraySizetypearraySize;type type arrayNamearrayName=new=new typearraySizetypearraySize;对于复合类型的数组,需要经过两步空间分配。对于复合类型的数组,需要经过两步空间分配。首先:首先:type type arrayNamearrayName=new =new typearraySizetypearraySize;然后:然后:arrayName0=new arrayName0=new type(
8、paramListtype(paramList););arrayNamearraySize-1=new arrayNamearraySize-1=new type(paramListtype(paramList););1、数组数组一维数组:初始化一维数组:初始化例如:例如:String String stringArrarstringArrar;/;/定义一个定义一个StringString类型的数组类型的数组stringArraystringArray=new String3;/=new String3;/给数组给数组stringArraystringArray分配分配3 3个引用个引用初始
9、化每个引用值为初始化每个引用值为nullnullstringArray0=new String(stringArray0=new String(“howhow”););stringArray1=new String(stringArray1=new String(“areare”););stringArray2=new String(stringArray2=new String(“youyou”););初始化各数组元素1、数组数组一维数组:初始化一维数组:初始化0n编程者也能用现有的数组初始化数组。编程者也能用现有的数组初始化数组。long even=2L,4L,6L,8L,10L;long
10、 value=even;1、数组数组一维数组:初始化一维数组:初始化246810Even0Even1Even2Even3Even4Value0Value1Value2Value3Value4evenevenvaluevalueDouble inputArray=new double100;Double outputArray=new double100;Double temp;temp=inputArray;inputArray=outputArray;outputArray=temp;1、数组数组一维数组:初始化一维数组:初始化当定义了一个数组,并用运算符new为它分配了内存空间后,就可以引
11、用数组中的每一个元素了。元素的引用方式为:arrayNameindex index为数组下标,可以是整型常数或表达式,如:arrayName1,arrayNamei,arrayName6*i等。下标是0序的,即从0开始,一直到数组长度减1。数组实例1、数组数组一维数组:访问数组元素一维数组:访问数组元素 另外,与C、C+中不同,Java对数组元素要进行越界检查以保证安全性。同时,对于每个数组都有一个属性length指明它的长度,例如:intArray.length指明数组intArray的长度。1、数组数组一维数组:边界检查一维数组:边界检查nint e;/仅声明nint f=new int5
12、;/仅创建,未初始化各元素,缺省为0nint g=new int4;for(int i=0;i java demoOfStringBuffer buffer=abclength=3capacity=19n2 2 改变改变StringBufferStringBuffer对象的长度对象的长度setLengthsetLength()()减少对象的长度,字符串将被截断;增加长度时,附加减少对象的长度,字符串将被截断;增加长度时,附加的字符将包含的字符将包含u0000u0000进来。进来。2、字符串、字符串StringBuffer:基本方法基本方法3.append 3.append 3.1 3.1 ap
13、pend()append()appendappend方法将指定的参数对象转化成字符串,附加在原来的字符方法将指定的参数对象转化成字符串,附加在原来的字符串对象之后。串对象之后。在每种情况下,数值均被转换成与该值对应的字在每种情况下,数值均被转换成与该值对应的字符串。符串。Boolean Boolean 型变量型变量 将是将是“truetrue”或或“falsefalse”数值型的数据的等价字符串将是该值的十进制表示。数值型的数据的等价字符串将是该值的十进制表示。例子例子3.2 3.2 另一个版本将另一个版本将StringString对象的一部分添加到对象的一部分添加到StringBufferS
14、tringBuffer对象对象上。上。append(Stringappend(String对象,对象,int,intint,int)一个参数是要添加的第一一个参数是要添加的第一个字符的下标位置,另一个参数是被添加字符的总数。个字符的下标位置,另一个参数是被添加字符的总数。2、字符串、字符串StringBuffer:基本方法基本方法n4.insert4.insert insert(int index,对象名对象名)在指定的位置插入给出的参数对象所转化而得的字在指定的位置插入给出的参数对象所转化而得的字符串。符串。例子例子 insert(int index,char str,int offset,
15、int length)在在 StringBuffer对象中由对象中由index指定的位置开始插入指定的位置开始插入子串,该子串是子串,该子串是str数组中由数组中由offset位置开始计数位置开始计数的的length个字符的个字符的String表示。表示。例子例子2、字符串、字符串StringBuffer:基本方法基本方法5.5.setChatAtsetChatAt()()setCharAtsetCharAt (intint index,char index,char chch)用来设置指定索引用来设置指定索引indexindex位置的字符值。位置的字符值。6.6.倒置字符串倒置字符串 rev
16、erse()reverse()例子例子字符串的综合实例字符串的综合实例 2、字符串、字符串StringBuffer:基本方法基本方法 1.C/C+的字符串只是简单的以零字符结尾的字符数组,而Java中,字符串是一个封装的对象,这种处理对于编程者提供了许多有利之处。2.C/C+中可以通过指针直接对字符串所在的内存地址进行操作,并且不对越界情况进行检查,Java中只能通过类String或StringBuffer所提供的接口对字符串进行操作,并且要对越界情况进行检查并报告,这样大大增加了安全性。3.由于类String和StringBuffer的接口都经明确说明,所以我们可以预知Java中字符串处理的功能;而在C/C+中,只有通过库函数或者自定义函数对字符串进行处理。2、字符串、字符串JavaJava与与C/C+C/C+处理字符串的差别处理字符串的差别