字符串知识点_第1页
字符串知识点_第2页
字符串知识点_第3页
字符串知识点_第4页
字符串知识点_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、这章分为3个大部分 String 正则表达式 StringBuffer重点是对字符串的操作和比较 也就是掌握String和StringBuffer的常用API 其他内容则是掌握基本的正则表达式以及String对象创建在JAVA里的特殊之处1 了解字符编码集的概念。ASCII 标准( American Standard Code for Information Interchange)是美国信息互换标准代码ASCII标准是目前被广泛使用的文本字符编码集。 这个字符编码集允许不同的计算机非常方便地共享信息ASCII字符编码集对于英语语言,工作是非常好的,因为在英语当中所有字符和标点符号都包含在AS

2、CII编码集 中。但是ASCII 编码集不能表示其它语言全部的字符集,比如中文、韩文这样双字节的语言。JAVA语言要使用跨平台的优势,仅使用ASCII字符编码集已经不能满足需要了。所以JAVA采用Unicode Worldwide Character Standard (Unicode联合码) 支持各种不同语言的交互、处理和显示。Java使用Unicode标准来描述char(字符)常量,这样的话一个char类型的字符占两个字节,所以可以支持中文这样的双字节字符。2 String字符串一个 String字符串是由多个单字符所组成的字符序列我们可以通过调用String类对象的方法charAt(),

3、来访问字符串里面的每一个字符。在一个字符串中的每一个字符都有一个索引值,用于访问字符串中的字符。Java字符串使用的索引值从0开始,字符串中第一个字符的索引值为0,第二个字符的索引值为1,依次类推.String是个对象,在这个对象中提供了一个length的方法。该方法返回字符串的长度,即这个字符串是由多少个字符组成。代码示例:String x="abcdef" for(int i=0;i<x.length();i+) System.out.println(x.charAt(i);代码分析:在这个代码里,先得到一个字符串对象x,通过循环打印出x里每一个字符。通过x.le

4、ngth()方法得到字符串的长度,然后,再通过方法charAt(i)循环得到字符串里每一个字符。打印结果是a b c d e f使用length()方法的好处在于代码具体有通用性。这样另外遍历一个不同长度的字符串时,代码可以不需改动。字符串常用方法:int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。代码示例:String x="abcdef" System.out.println(x.indexOf("cd");打印结果是2。因为”cd”字符串出现的位置是在x这个字符串下标为2的位置。int lastIndex

5、Of(String str):返回在此字符串中最右边出现的指定子字符串的索引。代码示例:String x="abcdefcd" System.out.println(x.lastIndexOf("cd");打印结果是6。因为使用lastIndexOf()方法时,是从最右边开始算起,找到第一个匹配项,然后返回该项的索引下标。虽然x这个字符串中有两个cd子串,但通过lastIndexOf()方法返回的是第二个子字符串的下标。String substring(int beginIndex):返回一个当前字符串的一个子字符串它的内容是从beginIndex索引开

6、始,到字符串结束这样的子字符串。如果是substring(int beginIndex,int endIndex)。那么字符串的内容是beginIndex索引开始,到endIndex这段字符串。代码示例:String x="abcdefcd" System.out.println(x.substring(3);/1 System.out.println(x.substring(3,7);/2 在执行到第一行时,它的结果是”defcd”。是从下标为3的字符开始到x这个字符串最后一个字符。 在执行第二行时,它的结果是”def”。是从下标为3的字符开始到下标为7的字符串结束。但不

7、包括下标为7的字符。结果是”defc”。String trim():返回当前字符串,去掉两头空格的一个新字符串。代码示例:String x=" sss " System.out.println("*"+x.trim()+"*"); 结果是:*sss*String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。String replaceAll(String regex, String replacement)

8、: 使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串 代码示例: String x="abcdef"System.out.println(x.replace('a', '2');/1System.out.println(x.replace(“bcd”, “3”);/2 运行结果是第一行打印2bcdef。第二行打印a3efString split(String regex) :根据给定的正则表达式的匹配来拆分此字符串,返回一个字符串数组代码示例:String x="ab de ft"S

9、tring index=x.split("s+");for(int i=0;i<index.length;i+)System.out.println(indexi);代码分析:这段代码先把x按一个或多个空格拆分成数组。其中s+是正则表达式,表示匹配一个或多个空格。然后遍历这个数组。记住,数组的长度是length属性,字符串长度是length() 方法。这段代码结果是“ab (换行) de (换行) ft” 关于字符串生成对象的问题生成字符串有两种方式:String x=”abc”;/1String x=new String(“abc”);/2这两种方式有什么区别呢?代

10、码分析:String x=new String(“abc”);String y=new String(“abc”); 内存图如下: 通过这种方式创建的字符串对象,产生过程如下:先创建x这个字符串变量,然后将这个变量指向一个字符串对象,产生这个字符串对象之前,先去常量池里去找,看有没有”abc”这个字符串常量存在。如果没有,就会在常量池里创建一个字符串常量对象,然后将这个常量对象的内容拷贝到产生的这个对象里。所以String x=new String(“abc”);产生了两个对象,一个是x所指向的字符串对象,一个是”abc”这个字符串常量。当再执行String y=new String(“abc

11、”);语句的时候。这时,常量池里已经有”abc”这个常量字符串对象存在。所以就直接把”abc”字符串常量的内容拷贝到产生的对象里。这时就是生成的一个对象。String x=”abc”;String y=”abc”;内存图如下:通过内存图可以发现,产生的x和y两个变量指向的都是常量池里的”abc”这个字符串常量。所以当使用x=y的时候,会返回一个true。这是因为这两个变量指向的都是字符串常量这个对象。字符串比较 字符串是个对象。所以使用=比较的时候,比较的是两个变量是否指向同一个对象。字符串对象还提供了方法 equals ()和 equalsIgnoreCase()用来 比较字符串的内容 。

12、equals 方法比较区分大小写, equalsIgnoreCase方法不区别大小写代码示例:String x=new String(“abc”);String y=new String(“abc”);String a=”abc”;String b=”abc”;System.out.println(x=y);/1System.out.println(x=a);/2System.out.println(a=b);/3System.out.println(a.equals(x);/4System.out.println(a.equals(b);/5代码示分析:第1一行时,比较的是x和y两个变量是否

13、指向同一个对象。这时,x和y都是指向通过new 产生的对象。所以不是同一个对象。返回一个false同样,第2行,比较的是x和a两个变量是否指向同一个对象。这时,x指向通过new 产生的对象,而a则指向字符串常量。所以不是同一个对象。返回一个false;第3行,比较的是a和ab两个变量是否指向同一个对象。这时, a和b都指向字符串常量。所以指向同一个对象。返回一个true;第4行和第5行,通过equals方法比较字符串。这时比较的是字符串内容。而a指向对象和x指向对象内容完全一样,所以返回true;新加入compareTo按字典顺序比较方法方法 compareTo 返回一个值:如果字符串是相等的

14、,那么返回值0. 如果第一个字符串比 第二个字符串小,那么返回一个整形负数如果第一个字符串比 第二个字符串大,那么返回一个整形正数具体返回的整形值是两个字符串第一个不匹配字符之间对应字节的差。代码示例:System.out.println("abc".compareTo("aef");结果是-3。原因是当比较时,第一个不匹配字符一个是b一个是e。那么b对应的字节是98,而e对应的字节是101。这时返回的值是98-101。所以结果是-3。3 正则表示式 正则表达式,可以说是任何一种编程语言都提供的机制,它主要是提供了对字符串的处理能力。 正则表达式在页面处

15、理中的使用场景: 字符串验证。验证某些域符合某种规则,例如邮件输入框必须输入的是邮件、联系电话输入框输入的必须是数字等等 java采用 字符串对象.matches(正则表达式的方式)进行匹配由四个字符组成的字符串. 第一个字符是 A. 第二个字符是一个0到4之间的数字 ,第三个字符是b. 最后一个字符是 0 或 5.A0-4b05单个数字 0, 1, 或 3.013单个字符可以是一个小写字母或者是一个数字a-z0-9单个数字是 0, 1, 2, 3, 8, 或者 9.表示不包括&&表示并且0-9&&4567任意两位数 从 00 到 99.0-90-9描述表达式重

16、复 X 至少 N次,但不超过 M 次.XN,M重复 X 至少 N 次.XN,把X完整重复N次,X是一个描述单个字符的正则表达式XN描述表达式+表示字符串出现可以是一次或多次*表示字符串出现可以是零次或多次方括号 ( ) 被用于描述取得字符的选择范围 如 ab 那么只能选a或b为了描述多个字符的选择范围,我们使用圆括号分组和垂直线分割条 例如: (ab|cde) 那么只能选择ab或cde匹配汉字u4e00-u9fa5字符串一旦产生,那么里面的内容就不会改变。如果对该字符串进行操作,那么必定是新产生一个字符串对象。代码分析:String x=”abc”;x.replaceAll(“ab”,”123

17、”);System.out.println(x);这时结果是abc,因为在进行replaceAll进行替换时,会新产生一个123c的字符串对象。但原来x所指向的对象是不会变的。这时代码如果改成x=x.replaceAll(“ab”,”123”);那么是把x变量指向新产生的123c这个对象。再打印时,就是123C一个String对象被创建后,它是不能被改变的.而且会产生很多临时量如:String str=“nk”+“ill”+“ ”+“ans”; 我们在对String进行操作时并不能改变原来的字符串,如果我们想要更方便,效率更高的对字符串进行操作时,应该用什么?当我们需要对一个字符串对象反复的操

18、作时,我们可以使用StringBuffer这个类。StringBuffer这个类是在缓冲区创建一个对象,这个对象长度是不固定的。可随时进行更改而不会产生新的对象。String用于存储不可变(固定长度)的字符串,而当我们需要操作字符串(动态改变字符串内容)时,应该使StringBuffer以提高效率掌握String和StringBuffer相互转化的常用方法 append(String str)/在当前StringBuffer后面新加入新的字符串new StringBuffer(String str)toString() /将StringBuffer转化为字符串setCharAt/将当前字符串中某个字符进行替换insert;/进行相应的插入工作subString;/返回StringBuffer的子串delete:/删除一段字符代码示例public class Test public static void stringReplace(String text) text=text+”c”; /1 public static void bufferReplace(StringBuffer text) text=text.append("c&q

温馨提示

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

评论

0/150

提交评论