您的位置:首页 > Web前端

JAVASE基础模块十五(StringBuffer类)

2020-07-29 17:10 513 查看

JAVASE基础模块十五(StringBuffer类)

public class Stbuffer {
public static void main(String[] args) {
//总共创建五个地址空间
String str = "abc";
str += "ccc";
str += "dddd";

//只创建一个地址空间
String s = "abc"+"ccc"+"dddd";
} }

StringBuffer类

  • StringBuffer 线程安全的可变字符序列 相当于一个字符容器,你可以不断的往容器中追加字符
public class Stbuffer {
public static void main(String[] args) {           		//创建一个空的字符容器                         		StringBuffer s = new StringBuffer();                 StringBuffer ss = new StringBuffer(100);           StringBuffer sss = new StringBuffer("abcacbacb");                                   //往容器中追加数据                             s.append("ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss");
//获取容器的容量                                       System.out.println(s.capacity());                   System.out.println(ss.capacity());                   System.out.println(sss.capacity());                 //获取容器的长度                                       System.out.println(s.length());                     System.out.println(ss.length());                     System.out.println(sss.length());                   //容器与长度不同 前者是理想最大容量 后者是真实长度   }}
运行结果:
64
100
25
64
0
9

Process finished with exit code 0
  • 特点:
      往容器中追加数据 返回还是原来的那个容器
    1. StringBuffer 重写了toString()方法 然后把容器中的数据转换成字符串返回
public class Sr {
public static void main(String[] args) {
StringBuffer s = new StringBuffer();
//往容器中追加数据 返回还是原来的那个容器
StringBuffer c = s.append("ssssssssss");
System.out.println(c == s);//true
s.append(333).append(777);
//StringBuffer 重写了toString()方法 然后把容器中的数据转换成字符串返回
System.out.println(s);
System.out.println(s.toString());
}
}
运行结果:
true
ssssssssss333777
ssssssssss333777

Process finished with exit code 0
  • 指定插入
public class Stbr {
public static void main(String[] args) {
StringBuffer s = new StringBuffer("chenmo");
s.append("shirenlei").append("debaoguibenzhi");
//StringBuffer 里面的数据也是编有索引的
//在容器中的指定位置 插入数据 返回的还是原来的数据
StringBuffer dd = s.insert(0, "banxiuxiudaobanyuanjun");
System.out.println(s);
System.out.println(dd);
}
}
运行结果:banxiuxiudaobanyuanjunchenmoshirenleidebaoguibenzhi
banxiuxiudaobanyuanjunchenmoshirenleidebaoguibenzhi

Process finished with exit code 0
  • 删除
public class Stbr {
public static void main(String[] args) {
StringBuffer ss = new StringBuffer("哈哈哈衣带渐宽终不悔 为伊消得人憔悴哈哈");
//根据指定索引 删除容器中的单个字符
ss.deleteCharAt(0);
System.out.println(ss);
//删除一段字符 返回的
ss.delete(0,1).delete(ss.length()-2,ss.length()-1);
System.out.println(ss);

}
}
哈哈衣带渐宽终不悔 为伊消得人憔悴哈哈
哈衣带渐宽终不悔 为伊消得人憔悴哈

Process finished with exit code 0
  • 反转与替换
public class Tihuan {
public static void main(String[] args) {
StringBuffer ss = new StringBuffer("衣带渐宽终不悔 为伊消得人憔悴 哈哈");
int h = ss.indexOf("哈");
//根据起始索引与终止索引 替换容器中的一部分内容 返回的还是容器本身
StringBuffer ee = ss.replace(h, ss.length(), "灯火阑珊处");
System.out.println(ee);

//反转 反悔的还是容器本身 返回的还是容器本身
StringBuffer aa = ss.reverse();
System.out.println(aa);

}
}
运行结果:
衣带渐宽终不悔 为伊消得人憔悴 灯火阑珊处
处珊阑火灯 悴憔人得消伊为 悔不终宽渐带衣

Process finished with exit code 0
  • 截取
public class Tihuan {
public static void main(String[] args) {
StringBuffer ss = new StringBuffer("衣带渐宽终不悔 为伊消得人憔悴 哈哈");
//截取 根据起始索引与终止索引 截取容器中一部分内容 返回string类型 字符串
System.out.println(ss.substring(0, 7));

}
}
衣带渐宽终不悔

Process finished with exit code 0
  • 参数传递
public class Canshuchuandi {
public static void main(String[] args) {
//引用类型传递作为参数传递 形参的改变会影响实参
//String类型作为参数传递 属于值传递 会把字符串的值传递过去
String er="五花马千金裘";
change(er);
System.out.println(er);
StringBuffer dd = new StringBuffer("朝为");
change(dd);
System.out.println(dd);
}
public static void change(StringBuffer er) {
er.append("呼儿将出换美酒").append("卿卿暮暮");
System.out.println(er);
}
public static void change(String er) {
er+="呼儿将出换美酒";
System.out.println(er);
}
}
运行结果:
五花马千金裘呼儿将出换美酒
五花马千金裘
朝为呼儿将出换美酒卿卿暮暮
朝为呼儿将出换美酒卿卿暮暮

Process finished with exit code 0
  • StringBuilder

    // StringBuffer  线程安全的字符序列,效率低
    //  StringBuilder 一个可变的字符序列,线程不安全的,效率高
    //  此类提供一个与 StringBuffer 兼容的 API,但不保证同步。
    //  该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。
    //  如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
  • 类型转换

public class Leixingzhuanhuan {
public static void main(String[] args) {
String s="身无彩凤双飞翼";
StringBuffer ss=new StringBuffer("零丁洋里叹零丁");
//string---stringbuffer
//方式1
StringBuffer se = new StringBuffer(s);
System.out.println(se);
//方式2:
StringBuffer sb2 = new StringBuffer();
sb2.append(s);
System.out.println(sb2);
//方式3:
StringBuffer sb3 = new StringBuffer();
sb3=sb2.insert(0,s);
System.out.println(sb3);
////stringbuffer---string
//方式一 toString()
StringBuffer sb4 = new StringBuffer("aaaaa");
String s1=ss.toString();
System.out.println(s1);
//String 类中有一个构造方法
String s2 = new String(sb4);
System.out.println(s2);
}
}
运行结果:
身无彩凤双飞翼
身无彩凤双飞翼
身无彩凤双飞翼
零丁洋里叹零丁
aaaaa

Process finished with exit code 0

待续 …

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: