Java-StringBuffer类
对String类的加强
【介绍】
-
java.lang.StringBuffer 代表可变的字符序列,可以对字符串内容进行增删;
-
很多方法和String相同,但StringBuffer是可变长度的;
-
StringBuffer是一个容器。是字符串缓冲区。
【String 和 StringBuffer】
(1)String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低。//private final char value[];在常量池中。
(2)StringBuffer保存的是字符串变量,里面的值可以更改,,每次的更新实际上可以更新内容,不用每次更新地址,效率较高。// char[] value;这个放在堆里。
【StringBuffer的构造器】
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
说明:要看源码!
说明:将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);