第五章
Unicode
不管是一个字母还是一个汉字,都是一个Unicode字符
String类 | StringBuffer类 |
---|---|
不可更改 | 可更改 |
侧重于字符串的比较、字符定位、子串提取等查询操作 | 侧重于字符的添加、插入、设置等操作 |
有些操作也会对字符串进行更改操作,比如toUpperCase方法可将所有的小写字符串转变成为大些,但是这些调用都会产生一个新的字符串作为处理结果,而不会对原来的字符串做任何修改。
5.1 String类
String类软件接口的摘要:
public final class String…{
public String…
构造方法 | 描述 |
---|---|
String () | |
String (String value); | |
String (char[] value); | |
String (byte[] bytes); | |
String(StringBuffer buffer); | |
– | – |
实例方法 | 描述 |
byte[] getBytes(); | 返回包含字符编码的字节数组 |
byte[] getBytes(String enc) throws UnsupportedEncodingException; | |
int length() | 长度 |
char charAt(int index); | 提取字符串 |
String substring(int beginIndex, int endIndex); | 取子串 |
int indexOf(int ch); | 定位字符 |
int indexOf(String str); | 定位子串 |
int compareTo(String anotherString); | 大小比较 |
boolean equals(object anobject); | 相等比较 |
String concat(String str) | 字符串连接 |
String replace(char oldChar, char newChar); | 替换字符 |
String trim(); | 去掉前后空格 |
String toLowerCase(); | |
String toUpperCase(); | |
String toString(); | 返回字符串对象本身 |
– | – |
//类方法 | 描述 |
public static String valueOf(int i); | 返回int型的字符串表示 |
常见字符集有以下4种 | 描述 |
---|---|
UTF-8 | USC转换格式。用单字节,双字节或三字节编码字节。 |
UnicodeBig | 16位Unicode编码,高字节在前 |
UnicodeLittle | 16位Unicode编码,低字节在前 |
GBK | 简化汉字,西文字符用单字节表示,汉字用双字节表示。 |
5.1.2 提取与定位
类别 | 返回类型 | 方法签名 | 功能描述 |
---|---|---|---|
提取 | char | charAt(int index); | 提取字符串 |
– | String | substring(int beginIndex, int endIndex); | 取子串 |
– | String | substring(int beginIndex); | 取子串,从beginIndex开始至末尾 |
– | void | getChars(int srcBegin, int scrEnd, char[] det, int dstBegin) | 从字符串中提取出部分字符并复制到指定的目标字符数组dst中。 |
定位 | |||
– | int | indexOf(int ch); | 返回指定字符第一次出现的位置(int型) |
– | int | indexOf(int ch, int fromIndex); | 返回字符ch在fromIndex之后第一次出现的位置序号 |
– | int | indexOf(String str); | 返回指定字符串第一次出现的位置(int型) |
– | int | indexOf(String str,int fromIndex); | 返回字符串str在fromIndex之后第一次出现的位置序号 |
– | int | lastindexOf(int ch); | 返回指定字符最后一次出现的位置序号 |
– | int | lastindexOf(int ch, int fromIndex); | 返回字符ch在fromIndex之后最后一次出现的位置序号 |
– | int | lastindexOf(String str); | 返回指定字符串最后一次出现的位置(int型) |
– | int | lastindexOf(String str,int fromIndex); | 返回字符串str在fromIndex之后最后一次出现的位置序号 |
5.1.3字符串比较
int compareTo(String anotherString)
调用串小于参数串,返回值<0;
…大于…,…>0;
…等于…, …=0(字符串长度及对应位置上的字符都相同)
1、在Java中,两个字符串的大小比较最终会归结为两个字符串中各对应位置上字符Unicode码值的大小比较。
2、区分大小写,大写小于小写。
3、eauals判断两个字符串是否具有相等的内容。
== 判断两个引用类型变量是否只想同一个对象。
s1 equals s3:false
s1 equalsIgnoreCase s3:true
s1 equals s4:true
s1 == s4:false
s1 == s2:true
返回类型 | 方法签名 | 功能说明 |
---|---|---|
int | compareTo(String anotherString) | 比较两个字符串的大小,调用参数<参数串,返回值<0。(同理) |
– | compareToIgnore(String str) | |
– | equals(Object anObject) | 用于判断两个字符串是否相等(内容相同),返回true/false。 |
– | equalsIgnore(String anotherString) | 判断字符串相等时将忽略字符大小写区别。 |
boolean | endsWith(String suffix) | 判断调用串是否已指定串suffix结尾 |
– | startsWith(String prefix) | 判断调用串是否已指定串prefix开始 |
– | startsWith(String prefix, int toffset) | 判断调用串从指定位置toffset算起是否已指定串prefix开始 |
– | regionMatches(int toffees,String other ,int offset, int len) | 判断两个字符串中的子串是否相等。其中toffees:调用串中子串的起始位置。ooffset:参数串中子串的起始位置。len:两个子串的长度。 |
5.1.4 其他若干实例方法
类别 | 返回类型 | 方法签名 | 功能描述 |
---|---|---|---|
连接 | String | concat(String str) | 将参数串连接至调用串尾部产生一个新的字符串并返回 |
替换 | String | replace(char oldChar ,char newChar) | |
去空 | String | trim() | 移除前后两端所有空白字符产生一个新的字符串并返回,如果调用串前后两端没有空字符串或者调用串为空串则返回调用串本身。 |
大小写转换 | String | toLowerCase()或者toUpperCase() | 如果没有字符需要被转换则返回调用串本身。否则产生一个新字符串并返回。 |
- 注:String实例是不可修改的,如果上述实例方法的处理结果与当前调用串的内容不相等,则系统将返回一个新的String实例,否则返回当前调用串本身
5.1.5 类方法ValueOf
重载的valueof方法,返回类型为String型,但型参不同
方法签名 | 功能说明 |
---|---|
valueOf(boolean b) | b为true返回"true",否则返回"false" |
valueOf(char c) | 返回由单个字符(c)构成的字符串 |
valueOf(int i) | 返回数值的十进制格式字符串形式表示,等价于Integer.toString(i) |
valueOf(lang l) | …Long.toString(l) |
valueOf(float f) | …Float.toString(f) |
valueOf(double d) | Double.toString(d) |
valueOf(object obj) | 调用对象的toString()方法,返回对象的字符串形式表示 |
valueOf(char[] data) | 返回由字符数组构建的字符串 |
5.2 StringBuffer类
一个StringBuffer类的实例表示一个可变长、可修改的字符串对象。StringBuffer实例方法不会产生新的StringBuffer类实例,只是对原来的实例内容进行修改。
软件接口摘要如下
public final class StringBuffer … {
//构造方法 | 描述 |
---|---|
public StringBuffer(); | 创建一个初始容量为16、不包含任何字符的实例。 |
public StringBuffer(int length); | 创建一个初始容量为length、不包含任何字符的实例 |
public StringBuffer(String str); | 由str对象的内容创建一个StringBuffer实例。实例的长度为str.length()、初始容量为长度加16. |
//实例方法 | |
public int length(); | 返回StringBuffer类实例的当前长度。 |
public int capacity(); | 返回一个StringBuffer类实例的当前容量。(所占空间状态下能够表示的最长字符串的长度) |
public void setLength(int newLength); | 改变StingBuffer类实例的长度。若newLength<原来的长度,则字符串尾部的字符被截掉。若>,则在尾部添加空字符(’\u0000’) |
public void ensure(new Length) | 为保证实际容量总是大于等于实例的长度,在调整实例长度之前,方法会首先自动调用ensure(new Length)方法以调整实例容量 |
public void ensureCapacity(int minimumCapacity); | 该方法实例的实际容量至少等于minimumCapacity。若minimumCapacity > oldminimumCapacity,则实例的容量将被改变,新容量为max(minimumCapacity,oldminimumCapacity x 2 + 2)。若minimumCapacity < oldminimumCapacity,实例的容量不会被改变。 |
public StringBuffer append(String str); | 添加至尾部。() |
public StringBuffer insert(int offset,String str); | 将str插入至当前StringBuffer类实例的指定位置offset |
public StringBuffer delete(int start, int end); | 删除start到end-1上的一些字符。 |
public StringBuffer replace(int start, int end); | 用str替换start至end-1上的一些字符。 |
public StringBuffer reverse(); | 次序颠倒。 |
public String toString(); | 由当前实例的内容创建一个String对象并返回。 |
StringBuffer类包含一组重载的append方法,方法的型参类型即可以是String型,也可以是char、boolean、int、long、float、double、object或者char[]型。这些方法在执行时,一般会调用String类的valueOf类方法将参数值转换成为字符串。再将其添加到当前StringBuffer实例的后面,最后再返回StringBuffer实例本身。
StringBuffer类也包含一组重载的insert方法,这些方法第一个参数的类型都为int型,用于指定插入的位置;第二个参数的类型除了可以是String型,还可以是char、boolean、int、long、float、double、object或者char[]型。
5.3 字符串的特殊处理
+字符串是左连接操作,连接操作还是加法操作看情况。
5.4 包装类
暂时不写