------- android培训、java培训、期待与您交流! ----------
一、String类封装了大量的关于String操作的各种信息:比较两个字符串、查找和抽取串中的字符或子串、字符串与其它类型之间的相互转换等,由于string在编程过程中的使用频率较高,使得有关String的基本操作和常用的方法,变得尤为重要,在实际应用中要达到不假思索,就可以信手拈来的程度,来满足实际开发应用的需求。
1)获取:
1.1 int length()//获取字符串的长度,注意:和数组的长度属性的区别,数组的length是属性,没有小括号。
1.2 char charAt(int index)//获取在指定角标位置处的字符。
1.3 int indexOf(int ch)//返回ch在字符串中第一次出现的位置。
1,4 int indexOf(int ch,int fromIndex)//从fromIndex指定位置开始,返回ch在字符串中第一次出现的位置。
1.5 int indexOf(String str)//返回字符串str在字符串中第一次出现的位置。
1.6 int indexOf(String str,int fromIndex)//从fromIndex指定位置开始查找,获取str在字符串中出现的位置。
1.7 int lastIndexOf(int ch)//从右边开始查找ch在字符串中第一次出现的位置。
2)判断:
2.1 boolean startsWith(str)//判断字符串 是否是一指定内容开头。
2.2 boolean endsWith(str)//判断字符串是否是以指定内容结束。
2.3 boolean isEmpty()//判断字符串内容是否是 空。
2.4 boolean contains(str)//判断字符串中是否包含一个字串str。
特殊之处:indexOf(str)可以索引str在字符串中第一次出现的角标,如果返回-1,则表示str不存在字符串中。所以,此方法,也可用于判断一个字符串中是否包含另一个字串。
2.5 boolean equals(str)//复写Object中的equals()方法,判断字符串的内容是否相同。
2.6 boolean equalsIgnorcase()//忽略大小写的情况下,判断字符串内容是否相同。
2.7 String concat(String str)//将str连接到字符串的末尾。
3)转换:
3.1 将字符数组转换成字符串:
String(char[] arr)//构造函数的方式。
String(char[] arr,offset, count)//将数组中的一部分转换成字符串。
Static String copyValueOf(char[] arr);
Static String copyValueOf(char[] arr,int offset,int counts)
Static String valueOf(char[] arr)
3.2 将字符串转换成字符数组:
char[] toCharArray()//字符串和字节数组在装换过程中是可以指定编码表的
3,3将字节数组转换成字符串:
String (byte[] b)
String (byte[] b,int offset, int counts)
3.4将字符串转换成字节数组:
byte[] getBytes()
3.5将基本数据类型装换成字符串:
Static String valueOf(基本数据类型)
//3+" "和String,valueOf(3)//效果是一样的
3.6 替换:
String replace(oldChar,new Char)//如果要替换的字符串不存在,返回的还是原字符串。
String replace(charSequence target,charSequence replacement)//使用指定的字面值序列替换字符串所有匹配字面值目标序列的字符串。
3.7 切割:
String[] split(regex)
3.8获取字串:
String subString(begin)//从指定位置开始到末尾的子字符串。
String subString (begin,end)//从指定位置开始到指定位置结束 的子字符串,其中包含头,不包含尾。
3.8将字符串装换成大写或者小写:
string toUpperCase();
String toLowerCase();
4)去除字符串两端多余的空格:
String trim()
5)将两个字符串进行自然顺序的比较:
int compareTo(String);
二、String的最大特点:一旦被初始化,就不能再改变
String s1="abc";//s1在内存中有一个对象;
String s2=new String("abc");//s2在内存中有两个对象,s1!=s2,但,s1.equals(s2)返回true;它们两个字符串的内容是相同的;
三、1)StringBuffer:是一个字符串的缓冲区,是一个容器。
2)特点:长度是可以变化的;
可以操作多种数据类型;
最终会通过toString形式转换成字符串。
3)StringBuffer类也封装了有关操作数据的增、删、改、查的方法:
4)存储:
StringBuffer append()//将制定数据作为参数添加到已有数据的末尾。
StringBuffer insert(index ,date)将数据添加到指定角标处。
注意:在实际开发中,如果需要频繁的改变字符串的内容,就需要考虑到StringBuffer类的实现,它 性能比string要高;
例如:
String x="a“+4+"c";在编译时等效于:
String x=new StringBuffer().append("a").append("4).appeed("c").toString();
5)删除:
StringBuffer delete(start,end)
StringBuffer deleteCharAt(int index)
6)清空缓冲区:
StringBuffer sb=new StringBuffer("abcd");
//sb=new StringBuffer()又重新创建了一个新的缓冲区,不建议用这种方法。
sb.delete(0,sb.length())//这种方法是建议提倡使用的;
7)获取:与String的方法大同小异;
8)修改:
StringBuffer replace(start,end,String)
void setCharAt(int index,char char)
9)反转:
StringBuffer reverse();
四、JDK1.5版本后出现了StringBuilder,与StringBuffer的区别:StringBuilder是线程不同步的,效率稍高;而StringBuffer是线程同步的,效率相对较低。