第5章复合数据类型_第1页
第5章复合数据类型_第2页
第5章复合数据类型_第3页
第5章复合数据类型_第4页
第5章复合数据类型_第5页
已阅读5页,还剩11页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章生符、室符串、叔祖

学习导读

字符、字符串、数组都是使用Java

语言编制程序要经常使用的数据结构,

因此,熟练掌握这些数据结构是进一步

学习Java程序设计的必要阶段。通过本

章的学习,应该能够熟练掌握字符、字

符串、数组的各种基本操作.

教学重点与难点:

.

◎字符与字符串的区别

♦字符串常量与String类

◎才符串变量与SlringBuffer类

♦数组与数组类Arrays

5」字符

字符是指用单引号括起来推个字符,

如‘M、'b,、'A,等。这里的字符不是指占

1个字节的ASCH字符,而是指占2个字节的

Unicode字符。因为Unicode被设计用来处理

现在世界上所有书面语言中的字符,所以一

个汉字也是被当作--个字符来处理的。对于

单个字符,除了有char这个原始类型以外,

Java平台中的java.1ang包还专门提供了一个

Character类来进行储存和操作。

5.1.1Character类的构造函数

—Character类只能用于存储和操作单一的字符

4

数值,Character类的对象包含了单一字符数值。以

下是Character类提供的构造函数:

publicCharacter(char)

参数必须为一个char类型数据,它创建了一个

Character对象,该对象包含了由参数提供的数值。

一日.Character对象被仓U建,它包含的数值就不能改

变。

下面的语句将创建•个Character对象a,该对象

包含字符数据'b\

Charactera=newCharacter(*b1);

5.1.2Character类提供的常用方法

1.publicintcompareTo(Character)

conipareTo(Character)是一个实例方法,参数必须为

•个Character对象,而不能是char类型数据。该方法比较

两个Qmracter对象包含的数值,返回一个整数表明在当前

对象中的数值是否大于、等「或者小F参数给定的数值。

2.publicbooleanequals(Objectobj)

equals()是一个实例方法,用「比较两个对象。用「

Character类对象时,该方法比较当前对象容纳的数值和参

数对象容纳的数值。在两个对象容纳的数值相等的时候返回

true,否则返回false。

3.publicStringtoString()

所有的类从对象类继承了toString方法.toString是•

哪个实例方法,它将对象转换为字符串。该方法用「

Character类对象时,结果的字符串在长度为1,并且它包含

了有这个Charact门对缘容纳的数值,

4.publiccharcharValue()

charVa1ue是一个实例方法,它返回Character对象的'?符。

5.publicstaticbooleanisUpperCase(char)

istlpperCase(char)是一个类方法,该方法用来判断

字符参数值是否为大写。当字符参数值是大写时,返回值为

true,否则返回false。

【例5.1】Charac©•类提供的常用方法

5・2字符串

字符串指的是字符的序列,有两种类型的

字符串:一种是创建以后不需要改变的,称

为字符串常量,在Java中,String类用于存

储和处理字符串常量;另外一种字符串是创

建以后,需要对其进行改变的,称为字符串

变量,/EJava中,SIringBuffer类用于存储

和操作字符串变量。

5.2.1字符串常量与String类

在Java中.没行内置的字符串类型,字符串常就是作为

演的对尊存在的o

1.创建String类对象

String类的对象表示的是字符串常设,一个字符串常最创

建以后就不能够被修改/。所以在创建String类对象时,通

常需要向构造函数传递参数来指定创建的字符中的内容。以

)是常用的String类构造函数:

(1)publicString()

该构造函数用于创建一个空的字符串常量。

(2)publicString(Stringvalue)

该构造函数用「根据一个一经存在的字符小常量:来创建

一个新的字符也常量,该字符巾的内容和已经存在的字符小

常量一致。

(3)publicString(charvalue[])

该构造函数用于根据一个已经存在的字符数组来创建一个

rWW中常量。数组将在本章后面的内容中介绍。

(4)publicString(StringBufferbuffer)

该构造函数用「根据一个己经存在的StringBuffer对象来

创建一个新的字符串常最。

2.String类对象的常用操作及方法

在Java中,String类包含{]5()多个方.法来实现字符串的各

种操作,以卜介绍一些我们需要经常使用的方法。

(1)字符串的连接

publicStringconcat(Stringstr)

该方法的参数为一个String类对象,作用是将参数中的字

符串str连接到原来字符串的后面。

(2)求字符串的长度

publicintlength()

返回字中的氏度,这里的K度指的是字符串中Unicode字

符的数目。

3)求字符串中某一位置的字符

publiccharcharAt(intindex)

该方法在一个特定的位置索引一个字符小,以得到字符

串中指定位置的字符。值得注意的是,在字符串中第一个字

符的索引是0,第二个字符的索引是1,依次力推,最后一个

字符的索引是length()-lo

【例5.2】

(4)字符串的比较

比较字符串可以利用String类提供的下列方法:

Dintcon^)areTo(String

anotherString)

该方法比较两个字符小,和Character类提供的compareTo

方法相似,Character1提供的compareTo方法比较的是两个

字符类数据,而这里比较的是字符串数据。

其比较过程实际上是两个字符串中相同位置上的字符按

Unicode»|>排列顺,逐个比较的结果。如果在整个比较过程

中,没仃发现任何不同的地方,则表明两个字符串是完全相

等的,comparcT。方法返同0:如果/E比较过程中,发现了不

同的地方,则比较过程会停下来,这时一定是两个字符串在

某个位置上不相同,如果当前字符串在这个位置上的字符大

尸参数中的这个位置上的字符,comparcTo方法返回一个大

尸0的整数,否则返回一个小于。的整数。

2)publicbooleanequals(ObjectanObject)

该方法比较两个字符串,和Character类提供的equals方法

▼相似,因为它们都是币:我Object类的方法。该方法比较当前

字符串和参数字符串,在两个字符串相等的时候返回true,

否则返回false。

3)publicbooleanequalslgnoreCase(String

anotherString)

该方法和equals方法相似,不同的地方在「,

equalsIgnoreCase方法将忽略字母大小,;的区别。

(5)从字符串中提取子串

利用Siring类提供的substring方法可以从一个大的字符串中

提取不了申,该方法有两种常用的形式:

1)publicStringsubstring(int

beginIndex)

该h法从bcginlndcx位置起,从当前字符印中取出剩余的

字符作为一个新的字符串返卜九

2)publicStringsubstring(int

beginlndex,intendIndex)

该方法从当前字符串中取出一个「串,该「巾从

beginlndex位宜起至endlndex_1为结束。f申返的长度为

endlndex-beginlndex。

(6)判断字符小的前缀和后缀

判断字符串的前缀是否为指定的字:符串利}IJSiring类提供

h的下列方法:

1)publicbooleanstartsWith(String

prefix)

该方法用于判断当前字符串的前缀是否和参数中指定的字

符串prefix一致,如果是,返回true,否则返回false。

2)publicbooleanstartsWith(String

prefix,inttoffset)

该方法用「判断当前字符串从toffset位置开始的子串的前

缀是否和参数中指定的字符串prefix一致,如果是,返回true.

否则返同false。

判断字符串的后缀是否为指定的字符串利用String类提供

的方法:

-publ±cbooleanendsWith(Stringsuffix)

该方法用铺断当前字符串的后缀是否和参数中指定的字

符串suffix一致,如果是,返问irue,否则返回false。

(7)字符串中单个『符的查找

字符串中单个字符的查找可以利用String类提供的下列方

法:

1)publicintindexOf(intch)

该方法用F位找巧前字符串中某一个特定字符ch出现的位

置。该方法从头向后查找,如果在字符串中找到字符ch,则

返回字符ch在字符串中第一次出现的位置:如果在整个字符

串中没有找到字符Ch,则返回

2)publicintindexOf(intch,

intfromlndex)

一该方法和第种方法类似,不同的地方在于,该方法从

fromIndex位置向后查找,返回的仍然是字符ch在字符串第

一次出现的位置。

3)publicintlastlndexOf(intch)

该方法和第一种方法类似,不同的地方在广,该方法从

字符串的末尾位置向前查找,返回的仍然是字符ch在字符串

第一次出现的位置。

4)publicintlastlndexOf(intch,

intfromlndex)

该方法和第二种方法类似,不同的地方在r,该方法从

fro.Index位置向前查找,返回的仍然是字符ch在字符串第

一次出现的位置。

(8)字符串中子串的查找

字符串中子小的杳找。字符;I;中单个字符的查找卜分相似,

EWW用String类提供的下列方法:

1)publicintindexOf(Stringstr)

2)publicintindexOf(Stringstrz

intfromlndex)

3)publicintlastIndexOf(Stringstr)

4)publicintlastlndexOf(Stringstrz

intfromlndex)

(9)字符串中字符大小写的转换

字符串中字符大小写的转换,可以利用Siring类提供的下

一列方法:

1)publicStringtoLowerCase()

该方法将字符串中所有字符转换成小写,并返I可转换后的

新串。

2)publicStringtoUpperCase()

该方法将字符串中所有字符转换成大写,并返I可转换后的

新中。

(10)字符串中多余空格的去除

publicStringtrim()

该方法只是去掉开头和结尾的空格,并返回得到的新字

符串。值得注意的是,在原来字符串中间的空格并不去抻。

(II)字符串中字符的替换

I)publicStringreplace(char

o1dCharfcharnewChar)

该方法用字符newChar替换当前字符串中所有的字符

oldChar,并返回一个新的字符串。

2)publicStringreplaceFirst(String

regex,Stringreplacement)

该方法用字符串replacement的内容替换当前字符串中遇到

的第一个和字符串regex相一致的子串,并将产生的新字符串

返回。

3)publicStringreplaceAll(String

regex,Stringreplacement)

该方法用字符;I;rcplaccm疝的内容替换当前字符串中遇到

的所仃和字符小regex相一致的川;,并籽产生的新字符串返

回。

【例5.3】Suir

5.2.2字符串变量与StringBuffer类

1.创建StringBuffer类对象

StringBuffer类对象表示的是字符串变吊:,每一个

StringBuffer类对象都是可以扩充和修改的字符串变量。以

下是常用的StringBuffer类构造函数:

(1)publicStringBuffer()

(2)publicStringBuffer(intlength)

(3)publicStringBuffer(Stringstr)

2.StringBuffer类对象的常用方法

StringBuffe「类对象的扩充

StringBuffcr类提供两组方法用来扩充StringBuffcr对象所

包含的字符,分别是:

1)publicStrin^ufferappend

(Objectobj)

append方法JIJf扩充SlringBuffer对象所包含的字符,该

方法将指定的参数对象转化为字符串后,将其附加在原来的

StringBuffer对象之质,并返回新的StringBuffer对象。附加的

的参数对象可以是各种数据类型的,如int、char、String,

double等。

2)piiblicStringBufferinsert(

--------------int插入位置,参数对象类型,参数对象名)

该方法将指定的参数对象转化为字符串后,将其插入在原

来的StringBufferX'f象中指定的位置,并返回新的StringBuffer

对象。

(2)StringBuffer类对象的长度与容最

一个StiingBuffer类对象的长度指的是它包含的字符个数:

容量指的是被分配的字符空间的数量。

1)publicintlength()

该方法返I可当前StringBuffer类对象包含的字符个数。

2)publicintcapacity()

该方法返回'刍前StringBuffer类对象分配的字符空间的数

量。

(3)StringBuffer类对象的修改

publicvoidsetCharAt(intindex,charch)

该方法将当前SlringBuffer对象中的index位置的字符替换

为指定的字符ch。

(4)字符串的赋值和加法

字符串是在程序中要经常使用的数据类型,在Java编译

系统中引入了字符串的赋值和加法操作。

【例5.4】

5,3—数组

数组是一个长度固定的数据结构,它存储

多个相同类型的数值。数组直接被Java编程

语言所支持,但是无论数组是由原始类型构

成,或者带有其它类数据,数组也是一个对

象。数组是一个Object类的一个不明显的扩

展,所以可以指定•个数组给•个类型定义

为Object的变量。

5.3.1数组的创建和初始化

在Java中,数组可以是任何类型的一原始类型或类类型,

一也就是此一数组元素可以是原始类型的最,也可以是某一个

二类的对象。

在Java中,一个数组的创建•般需要以卜.三个步骤:

1.数组的声明

数组元素类型数组名[];

数组元素类型[]数组名;

2.创建数组空间

数组名=new数组元素类型[数组长度];

创建数组空间的工作可以和/后明数组的「作组介在起,

用一条语句来实现。如:

inta[];a=newint[20];

等价于:

inta[]=newint[20];

3.初始化数组

数组中的各元素是有先后次序的,每个数组元素用数组的

名字和它在数组中的位置来表达。在上面创建的数组a中,

a[0]表示数组a中的第一个元素,如a[l]表示数组a中的第:

个元素,依次类推,数组中的最后一个元素为a[19]0

初始化数组就是要使数组中的各个元素有确定的数值。如

果数组元素的类型是基木数据类型,由于•基本数据类型都有

缺省值,数组元素都自动初始化为缺省值,这个步骤可以省

略.比如上面的数组中的每•个元素值都是0。对于以某个

类的对象为数组元素的数组,初始化每个数组元素是必须的。

对于数组有几个需要注意的地方:

(I)所有的数组都有一个属性length,这个属性存储了数

组元索的个数。

(2)Java编程环境会自动检吉数组卜标是否越界。

【例5.5]Siring趋数组为拄仆

5.3.2数组的数组

Java编程语言中,因为•个数组可被声明为任何类型,所

一珈4以创建数组的数组、数组的数组的数组,等等。

[例5.6]数组的数组1

[例5.7]数组的数组2

5.3.3复制数组

System,arraycopy(fromzfromlndexz

to,toIndexzcount);

该方法从数组from的索引fronIndex位置起,复制count

个元素到数组t。的从索引tolndex位置开始的地方。这里要

注意,目标数组必须在调用arraycopy之间分配内存,而且

这个内存空间必须足够容纳被复制的数据。

【例5.8】数组的复制

5.3.4数组类Arrays

在“java.util“包中,专门有一个数组类Arrays,该类提

供了一些方法用于排序、查找等操作,在编制程序中可以直

接使用这些方法。

1.排序

在编制程序中可以直接使用类Arrays提供的某个so】t方法,

来对数组排序。sort方法常见的使用形式如F:

publicstaticvoidsort(Xxxa[])

该方法用改进的快速排序方法对指定的数组a进行排序,

其中数组a是类型为char、byte,short>int、long、float.

double或者boolean的一个数组。

sort方法还有另外一种常见的形式:

publicstaticvoidsort(Xxxa[]z

intfromlndextinttolndex)

这种形式只对数组a中指定范围内的兀素(从

a[fromlndex]到a[tolndex]之间的元素,其中不包含a[lolndex])

排序。

【例5.91

2.查找

publicstaticintbinarysearch

,--------(Xxxa[],Xxxv)

该方法用折半件找算:法在指定的数空a代找值为v的元素

其中数组a是类型为char、byte、short、int、long^float

double或孑boolean的,个薮组,v是9数组a的元素类型相

同的值.

该方法如果在数组a介找到值为v的元素,则返回该元素

的下标;如果没有找到匹配的元素,则返

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论