Java-StringBuffer类

对String类的加强


【介绍】

  • java.lang.StringBuffer 代表可变的字符序列,可以对字符串内容进行增删;

  • 很多方法和String相同,但StringBuffer是可变长度的;

  • StringBuffer是一个容器。是字符串缓冲区。


【String 和 StringBuffer】

(1)String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低。//private final char value[];在常量池中。

(2)StringBuffer保存的是字符串变量,里面的值可以更改,,每次的更新实际上可以更新内容,不用每次更新地址,效率较高。// char[] value;这个放在堆里。


【StringBuffer的构造器】

image
StringBuffer对象可以通过length()方法获取实体中存放的字符序列长度,通过capacity()方法来获取当前实体的实际容量。(字符序列长度和容量不是同一个概念)

String 和 StringBuffer的相互转换:

各自两种方式:一构造器,一方法
String -> StringBuffer:
(1)StringBuffer sb = new StringBuffer("saf");
(2)StringBuffer sb = new StringBuffer();
sb.append("sdf");

StringBuffer -> String:
(1)String s = sb.toString();
(2)String s2 = new String(sb);


【StringBuffer类常用方法】

(1)增 append;//可以append一个为空的String对象,源码会加入null这四个字符;但是若append(null)则会编译报错,因为不知道null指示的是String 还是StringBuffer。
(2)删 delete(start, end);//前闭后开
(3)查 indexOf //查找子串在字符串第一次出现的索引,如果找不到返回-1;
(4)改 replace(start, end ,sting) //将string到end间的内容替换掉,区间前闭后开;
(5)插 insert(int offset, String str) //在索引为offset的位置插入字符串str,原索引为offset的字符串往后移,即索引设置为几,插入的字符串若是调用IndexOf方法,结果就是几;而且改索引的最大值为StringBuffer对象的长度。
(6)获取长度 length

image
说明:要看源码!

image
说明:将String转换为StringBuffer,然后使用StringBuffer类的 lastIndexOf 和 insert 方法完成。

Scanner scanner = new Scanner(System.in);
System.out.println("请输入价格:");
String price = scanner.next();
StringBuffer stringBuffer3 = new StringBuffer(price);
int i = stringBuffer3.lastIndexOf(".");
while(i - 3 >0){
	i -= 3;
	stringBuffer3.insert(i,",");
}
System.out.println("结果为:"+ stringBuffer3);
posted @ 2021-09-25 15:11  Wiiiimp  阅读(147)  评论(0编辑  收藏  举报