《第5章字符串.ppt》由会员分享,可在线阅读,更多相关《第5章字符串.ppt(21页珍藏版)》请在优知文库上搜索。
1、第第5 5章章 字符串字符串字符串简介字符串简介连接字符串连接字符串String字符串操作字符串操作StringBuffer类操作类操作第第3章已经讲述过章已经讲述过char(字符)类型的用法,而字符串是字(字符)类型的用法,而字符串是字符的序列,为了方便操作处理字符串,符的序列,为了方便操作处理字符串,Java语言在包语言在包java.lang中封装了两个类中封装了两个类String和和StringBuffer。5.1 5.1 字符串简介字符串简介把字符串作为对象处理是把字符串作为对象处理是Java语言的一个突出特征,语言的一个突出特征,这与这与Java是一种面向对象的程序设计语言不谋而合。
2、通常可是一种面向对象的程序设计语言不谋而合。通常可以使用类以使用类String和和StringBuffer的对象来表示一个字符串。本的对象来表示一个字符串。本节主要讲述字符串常量、如何创建节主要讲述字符串常量、如何创建String字符串对象以及如字符串对象以及如何创建何创建StringBuffer缓冲区字符串对象。缓冲区字符串对象。5.1.1 5.1.1 字符串常量字符串常量Java中字符串常量的表示方法与中字符串常量的表示方法与C+中是相同的,都中是相同的,都是用双引号括起的一串字符,如是用双引号括起的一串字符,如“Are you ok?”。Java编编译器能够自动为字符串变量生成译器能够自
3、动为字符串变量生成String类的对象。所以可以类的对象。所以可以通过一个字符串常量直接初始化一个通过一个字符串常量直接初始化一个String类型对象,类型对象,int len=“Are you ok?”.length();5.1.2 String5.1.2 String创建字符串常量创建字符串常量通过类通过类String提供的构造方法,可以生成一个空字符串,提供的构造方法,可以生成一个空字符串,字符数组、字符串对象、字符缓冲区对象都可以生成一个字符字符数组、字符串对象、字符缓冲区对象都可以生成一个字符串对象。串对象。5.1.3 StringBuffer5.1.3 StringBuffer创建
4、字符串创建字符串StringBuffer类是字符串缓冲区,它可以支持对原字符类是字符串缓冲区,它可以支持对原字符串的修改,如对字符串中任何子串的增加、删除、修改,以串的修改,如对字符串中任何子串的增加、删除、修改,以及将两个字符串合并成一个字符串,但是不需要建立新的字及将两个字符串合并成一个字符串,但是不需要建立新的字符串。比较重要的特点在于,符串。比较重要的特点在于,StringBuffer类支持多线程,类支持多线程,且具有线程安全性,该类的方法可以同步执行。且具有线程安全性,该类的方法可以同步执行。5.2 5.2 连接字符串连接字符串字符串的所有操作中,字符串连接的使用是比较常见的字符串的
5、所有操作中,字符串连接的使用是比较常见的方法。方法。Java通常可以通过通常可以通过“+”运算符连接两个字符串,并且运算符连接两个字符串,并且通过通过“+”将一个字符串和一个其他基本数据类型变量连接,将一个字符串和一个其他基本数据类型变量连接,本节主要讲述如何将两个或多个字符串、字符、整数、浮点本节主要讲述如何将两个或多个字符串、字符、整数、浮点数等类型及对象连接成字符串。数等类型及对象连接成字符串。5.2.1 5.2.1 与字符串的连接与字符串的连接字符串之间的连接只是简单得通过字符串之间的连接只是简单得通过“+”运算符完成。运算符完成。通过通过“+”可以完成两个字符串的字符串之间连接,也可
6、以可以完成两个字符串的字符串之间连接,也可以同时使用多个同时使用多个“+”连接更多的字符串并产生一个新的字符连接更多的字符串并产生一个新的字符串,在创建一个很长的字符串时,可以将该字符串划分为多串,在创建一个很长的字符串时,可以将该字符串划分为多个短字符串,并使用个短字符串,并使用“+”运算将这些短字符串连接在一起运算将这些短字符串连接在一起,以避免原代码中长字符串的换行。,以避免原代码中长字符串的换行。5.2.2 5.2.2 与其他数据类型的连接与其他数据类型的连接字符串不仅可以与字符串连接,还可以与其他数据类字符串不仅可以与字符串连接,还可以与其他数据类型(基本数据类型、类的对象)的变量连
7、接。但是数据类型型(基本数据类型、类的对象)的变量连接。但是数据类型不同,连接方式不同。不同,连接方式不同。5.3 String5.3 String字符串操作字符串操作Java语言语言String类型的对象是不能改变的,意味着类型的对象是不能改变的,意味着String中的字符不能修改。所以在本节讲述的方法中没有一个方法中的字符不能修改。所以在本节讲述的方法中没有一个方法是改变所调用对象的方法,这一点必须引起初学者的注意,是改变所调用对象的方法,这一点必须引起初学者的注意,以避免不必要的麻烦。本节主要讲述以避免不必要的麻烦。本节主要讲述String类对字符串的基本类对字符串的基本操作方法、连接、
8、比较、查找、转化、截取等操作。操作方法、连接、比较、查找、转化、截取等操作。5.3.1 5.3.1 基本操作基本操作字符串最基本的操作是字符串长度方法字符串最基本的操作是字符串长度方法length(),取的,取的第第i个字符方法个字符方法charAt(i)、及取得指定位置的字符、及取得指定位置的字符getChars()方法。方法。5.3.2 5.3.2 比较比较两个字符串比较大小是从前到后逐个字符比较,并根两个字符串比较大小是从前到后逐个字符比较,并根据字符据字符Unicode值进行比较。从前到后比较时,单个字符不值进行比较。从前到后比较时,单个字符不一样时,字符一样时,字符Unicode值较
9、大的字符串较大。值较大的字符串较大。5.3.3 5.3.3 转化转化字符串与其他数据类型的转化是在程序设计过程中经字符串与其他数据类型的转化是在程序设计过程中经常使用的,常使用的,Java可以方便得实现字符串与整数、浮点数或布可以方便得实现字符串与整数、浮点数或布尔数等之间的转化。实现字符串与其他数据类型的转化方法尔数等之间的转化。实现字符串与其他数据类型的转化方法如表如表5.1所示。所示。5.3.4 5.3.4 查找查找程序设计中,经常会用到在某一个字符串中查找某一程序设计中,经常会用到在某一个字符串中查找某一个字符或某一个子字符串。个字符或某一个子字符串。String类提供如下查找方法如表
10、类提供如下查找方法如表5.2所示。所示。5.3.5 5.3.5 截取拆分截取拆分Java的的String类提供的方法中,有截取子字符串和将字类提供的方法中,有截取子字符串和将字符串拆分为更小字符串数组的方法符串拆分为更小字符串数组的方法.5.3.6 5.3.6 替换或修改替换或修改类类String表示不变字符串,因此不能直接对它的内容进表示不变字符串,因此不能直接对它的内容进行修改,而是通过生成一个新的行修改,而是通过生成一个新的String类对象,同时完成对类对象,同时完成对字符串的修改,字符串的修改,String类提供如下的修改方法。类提供如下的修改方法。5.4 StringBuffer5
11、.4 StringBuffer类操作类操作字符串缓冲区类字符串缓冲区类StringBuffer对象建立的字符串对象,对象建立的字符串对象,可以在本对象中增加、删除和修改字符串的长度,并且不需可以在本对象中增加、删除和修改字符串的长度,并且不需要建立新的对象,而是在原有字符串对象中修改。这正是要建立新的对象,而是在原有字符串对象中修改。这正是StringBuffer对象的最大好处,也是对象的最大好处,也是String与与StringBuffer之之间的最大区别。本节主要讲述如何使用这些操作方法。间的最大区别。本节主要讲述如何使用这些操作方法。5.4.1 5.4.1 基本操作基本操作编写完程序后,
12、使用编写完程序后,使用javac命令编译该文件产生命令编译该文件产生class文件,然文件,然后使用后使用java命令运行该命令运行该class文件,运行结果如图文件,运行结果如图5.10所示。所示。5.4.2 5.4.2 字符串操作方法字符串操作方法StringBuffer类还有一些比较重要的方法,如表类还有一些比较重要的方法,如表5.3所示。所示。5.4.3 5.4.3 添加添加append()append()StringBuffer类的类的append()添加方法跟添加方法跟String类的类的concat()相似,但是它们的本质区别在于相似,但是它们的本质区别在于String添加字符串
13、之添加字符串之后创建新的字符串对象,而后创建新的字符串对象,而StringBuffer是在原有基础上修是在原有基础上修改,并且改,并且append方法的功能相当强大。方法的功能相当强大。5.4.4 5.4.4 插入插入insert()insert()StringBuffer类的类的insert()方法是实现在缓冲区字符串中方法是实现在缓冲区字符串中插入新的数据值插入新的数据值。5.5 5.5 实例:字符串应用实例:字符串应用String对象是一个不可修改的常量数据,如果频繁的修对象是一个不可修改的常量数据,如果频繁的修改改String字符串的对象,系统每次都需要为新的字符串创建字符串的对象,系统每次都需要为新的字符串创建一个新的字符串对象,这样会导致系统的开销很大。因此,一个新的字符串对象,这样会导致系统的开销很大。因此,如果频繁修改字符串就使用如果频繁修改字符串就使用StringBuffer类对象完成,这样类对象完成,这样可大大提高程序的效率。可大大提高程序的效率。