java的 String、StringBuffer、StringBuilder的区别
一、三者的区别
- String类的每次改变都会生成一个新的字符串,浪费内存空间;适用于少量的数据处理;
- StringBuffer和StringBuilder每次都改变自身,不生成新的对像,节约内存 ;
- StringBuilder的多线程不安全,但运行速率较高,用于单线程大量数据理;StringBuffer用于多线程大量数据的处理。
二、String小结
创建字符串:
- 字符串常量创建:
String str = "有志者事竟成";
- 构造方法创建:
String str = new String("有志者事竟成");
String常用方法:
- 调用equals(object)方法:此方法比较字符值是否相等;
String str1 = "有志者事竞成";
String str2 = "有志者事竞成";
Boolean result = str.equals(str2)// result = true;
- 使用比较运算符 == :比较两字符串地址是否相同
String str1 = "有志者事竟成";
String str2 = "有志者事竟成";
String str3 = new String("有志者事竟成”);
Boolean result = (str1 == str2);// result = true
Boolean result = (str1 == str3);// result = false
- 获取指定位置的字符 str.charAt(String index);
public static void main(String args[]) {
String s = "有志者事竟成";
char result = s.charAt(0);
System.out.println(result);// 输出结果为: 有
}
- 获取指定符串的位置 str.indexOf(String str);
public static void main(String args[]) {
String s = "有志者事竟成";
int result = s.indexOf(“志者”);
System.out.println(result);// 输出结果为: 1
}
二、StringBuffer小结
StringBuffer类的常用方法
- StringBuffer类的创建
StringBuffer sbf = new StringBuffer("aWdefEhi");
- append()方法: 字符串的追加
public static void main(String[] args) {
StringBuffer sbf = new StringBuffer("aWdefEhi");
sbf.append("ACpqrstBDwxyz");
System.out.println(sbf);
}
输入输出结果:
- reverse():字符串的反转
StringBuffer sbf = new StringBuffer("你是年少的欢喜");
System.out.println(sbf.reverse());//输出结果为 喜欢的少年是你
- delete(int start, int end): 移除字符串中的字符
public static void main(String[] args) {
StringBuffer stbuf = new StringBuffer("abcdef");
stbuf.delete(2,4);//删除索引位置2,3两位
System.out.println(stbuf);
}
输出结果:
- deleteCharAt():删除指定位置的字符
public static void main(String[] args) {
StringBuffer stbuf = new StringBuffer("abcdef");
stbuf.deleteCharAt(2);
System.out.println(stbuf);//输出结果: abdef
}
三、StringBuilder小结
用法同StringBuffer