字符串3.4字符串•字符串指的是字符的序列,有两种类型的字符串:•字符串常量:创建以后不需要改变的,在Java中,String类用于存储和处理字符串常量•字符串变量:创建以后,需要对其进行改变的,在Java中,StringBuffer类用于存储和操作字符串变量。3.4字符串•3.4.1字符串常量与String类–在Java中,没有内置的字符串类型,字符串常量是作为String类的对象存在的。–创建String类对象•String类的对象表示的是字符串常量,一个字符串常量创建以后就不能够被修改了。•在创建String类对象时,通常需要向构造函数传递参数来指定创建的字符串的内容。•多次出现的字符常量,Java编译程序只创建一个String对象,如:Strings1=“汉字abc;Strings2=“汉字abc;Strings3=newString(“汉字abc);Strings4=newString(“汉字abc);System.out.println(s1==s2);System.out.println(s1==s3);System.out.println(s3==s4);3.4字符串•常用的String类构造函数:–publicString():该构造函数用于创建一个空的字符串常量。–publicString(Stringvalue):该构造函数用于根据一个已经存在的字符串常量来创建一个新的字符串常量,该字符串的内容和已经存在的字符串常量一致。–String(byte[]bytes,StringcharsetName):该构造函数构造一个新的String,使用指定的字符集解码指定的字节数组。–publicString(charvalue[]):该构造函数用于根据一个已经存在的字符数组来创建一个新的字符串常量。(数组将在本章后面的内容中介绍)–publicString(StringBufferbuffer):该构造函数用于根据一个已经存在的StringBuffer对象来创建一个新的字符串常量。3.4字符串•3.4.2String类对象的常用操作及方法–在Java中,String类包含有50多个方法来实现字符串的各种操作,以下介绍一些经常使用的方法。•charcharAt(intindex):返回指定索引处的char值•intcompareTo(StringanotherStr):按字典顺序比较两个字符串:•intcompareToIgnoreCase(Stringstr):不考虑大小写,按字典顺序比较两个字符串•Stringconcat(Stringstr):将指定字符串联到此字符串的结尾。等同于“+”•booleanendsWith(Stringsuffix):测试此字符串是否以指定的后缀结束•booleanequals(ObjectanObject):比较此字符串与指定的对象•booleanequalsIgnoreCase(StringanotherString):将此String与另一个String进行比较,不考虑大小写•inthashCode():返回此字符串的哈希码。哈希码是哈希表中使用的功能,具体用法请参照在集合框架中HashSet的用法3.4字符串•String类对象的常用操作及方法–intindexOf(Stringstr):返回第一次出现的指定子字符串在此字符串中的索引–intindexOf(Stringstr,intfromIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引–intlastIndexOf(Stringstr):返回最后一次出现的指定字符串在此字符串中的索引–intlastIndexOf(Stringstr,intfromIndex):从指定的索引处开始进行后向搜索,返回最后一次出现的指定字符串在此字符串中的索引–intlength():返回此字符串的长度–StringreplaceFirst(Stringregex,Stringreplacement):该方法用字符串replacement的内容替换当前字符串中遇到的第一个和字符串regex相一致的子串,并将产生的新字符串返回–StringreplaceAll(Stringregex,Stringreplacement):该方法用字符串replacement的内容替换当前字符串中遇到的所有和字符串regex相一致的子串,并将产生的新字符串返回3.4字符串•String类对象的常用操作及方法–String[]split(Stringregex):根据给定的字符串来拆分此字符串,得到一个字符串数组–booleanstartsWith(Stringprefix):测试此字符串是否以指定的前缀开始–Stringsubstring(intbeginIndex):返回一个新的字符串,它是此字符串的一个子字符串–Stringsubstring(intbeginIndex,intendIndex):返回一个新字符串,它是此字符串的一个子字符串–StringtoLowerCase():把字符串转换为小写–StringtoUpperCase():把字符串转换为大写–Stringtrim():去掉字符串两端的空格–staticStringvalueOf(XXXb):把其他类型变量转成字符串3.4字符串•3.4.3StringBuffer类及其简单应用•StringBuffer类也是java.lang.Object的子类。–与String类不同,StringBuffer类是一个在操作中可以更改其内容的字符串类。–一旦创建StringBuffer类的对象,在操作中可以更改和变动字符串的内容。–也就是说对于StringBuffer类的对象不仅能进行查找和比较等操作,也可以做添加、插入、修改之类的操作。3.4字符串•StringBuffer类提供了多种构造方法来创建类StringBuffer的对象。–publicStringBuffer():创建一个空字符串缓冲区,默认初始长度为16个字符。–publicStringBuffer(intlength):length指定的初始长度创建一个空字符串缓冲区–publicStringBuffer(Stringstr):用指定的字符串str创建一个字符串缓冲区,其长度为str的长度再加16个字符。–10个重载方法append,可以在字符串缓冲区末尾追加boolean、char、字符数组、double、float、int、long、string、Object等类型的新内容,append方法的返回类型均为StringBuffer。–9个重载方法insert,可以在字符串缓冲区中指定位置处插入char、字符数组、double、float、int、long、boolean、string、Object等类型的新内容。insert方法的返回类型均为StringBuffer。3.4字符串•3.4.4各种数据类型的转换–在实际工作中,我们经常会遇到数据类型之间转换的问题,比如计算得到的浮点型,却要作为字符串存储。或者,得到的日期型数据,确要解析成字符串。–Java的数据类型分为三大类,即布尔型、字符型和数值型,而其中数值型又分为整型和浮点型–Java的变量类型为布尔型boolean;字符型char;整型byte、short、int、long;浮点型float、double。–四种整型变量和两种浮点型变量分别对应于不同的精度和范围。此外,我们还经常用到两种类变量,即String和Date。下面的论述中,我们将阐述如何实现这些转换。3.4字符串•1、数据类型转换的种类–java数据类型的转换一般分三种,分别是:•简单数据类型之间的转换•字符串与其它数据类型的转换•其它实用数据类型转换3.4字符串•(3).包装类过渡类型转换–包装类,就是可以直接将简单类型的变量表示为一个类–在执行变量类型的相互转换时,我们会大量使用这些包装类•Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,分别对应于boolean、char、int、long、float和double•String和Date本身就是类。所以也就不存在什么包装类的概念了–在进行简单数据类型之间的转换(自动转换或强制转换)时,可以利用包装类进行中间过渡。–一般情况下,首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了3.4字符串•(3).包装类过渡类型转换–简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:•Boolean(booleanvalue)•Character(charvalue)•Integer(intvalue)•Long(longvalue)•Float(floatvalue)•Double(doublevalue)–而在各个包装类中,有××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换•例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量3.4字符串•3、字符串型与其它数据类型的转换–从java.lang.Object类派生的所有类提供了toString()方法,即将该类转换为字符串–例如:Characrer,Integer,Float,Double,Boolean,Short等类的toString()方法用于将字符、整数、浮点数、双精度数、逻辑数、短整型等类转换为字符串