常用方法
String
1、获取字符串长度: string.length()
2、字符串转换为char型数组: string.toCharArray()
3、从字符串中取出指定位置(num+1)的字符(下标从0开始):string.charAt(num)
4、字符串与byte数组的转换:string.getBytes()
5、过滤字符串中存在的字符(查找string字符串中str字符所在的第一个位置,返回位置下标数字):string.indexOf(str)
6、去掉字符串的前后空格: string.trim()
7、从字符串中取出子字符串:subString()
7-1 从字符串string中取出第num+1位及其之后的子字符串:string.subString(num);
7-2 从字符串中取出num1+1至num2之间的子字符串: string.subString(num1,num2);
8、字符串的大小写转换:
8-1 小写转大写:string.toUpperCase();
8-2 大写转小写:string.toLowerCase();
9、判断字符串的开头、结尾的字符(ch,并且返回一个boolean类型结果):
9-1 判断开头字符:string.startWith(ch);
9-2 判断结尾字符:string.endsWith(ch);
10、把string字符串中的所有子字符串oldstr替换为newstr: string.replace(oldstr,newstr);
11、向string字符串后插入新的字符串str: string=string+str;
StringBuffer/StringBuilder
【Stringbuffer/StringBuilder都是AbstractStringBuilder的子类,所以用法都一样。】
1 向字符串(stringBuffer)后插入新的字符串(sbf):stringBuffer.append(sbf); //无返回值
2、向字符串(stringBuffer)中下标为num处的位置后插入新的字符串(sbf): stringBuffer.insert(num,sbf);
3、把字符串(stringBuffer)中num1+1到num2之间的字符替换成字符串sbf:stringBuffer.replace(num1,num2,sbf);
4、过滤字符串(stringBuffer)中存在的字符(查找stringBuffer字符串中sbf字符所在的第一个位置,返回位置下标数字):stringBuffer.indexOf(sbf);
区别
String:不可变字符序列
StringBuilder:可变字符序列,线程不安全,效率高,用的最多
StringBuffer:可变字符序列,线程安全,效率低
注:当字符串需要不断被更改的时候,最好使用Stringbuffer/StringBuilder,这样可以节省内存空间。
当字符串被单个线程使用的时候,最好使用stringBuilder。当字符串呗多个线程使用的时候最好使用StringBuffer
内存机制:String类中的value字符数组用了final修饰,而Stringbuffer/StringBuilder没有。
public class TestString {
public static void main(String[] args) {
String str =
new String(
"a");
for(
int i =
0; i <
10; i++){
str += i;
}
System.
out.println(str);
}
}
这样创建了12个字符串类,很浪费空间。
public class TestStringBuilder {
public static void main(String[] args) {
StringBuilder str =
new StringBuilder(
"a");
for(
int i =
0; i <
10; i++){
str.append(i);
}
System.
out.println(str);
}
}
这样,只创建了二个类。。
参考:http://m.blog.csdn.net/article/details?id=52433046
转载请注明原文地址: https://ju.6miu.com/read-700205.html