
正文
java基础20 StringBuffer缓冲类
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
1、概要
StringBuffer 其实就是一个存储字符的容器
字符串特点:字符串是常量;它们创建之后不能更改了
字符串一旦发生变化,那么立马创建一个新的对象。
注意:字符串的内容不适合频繁修改的,因为一旦修改马上就会创建一个新的对象但是需要重复修改字符串的内容,建议使用字符串缓冲类(stringBuffer)
笔试题目:使用StringBuffer无参构造器创建一个对象时,默认初始容量多少?如果长度不够使用,自动增长多少倍?
StringBuffer底层依赖字符数组才能存储字符数据,该字符串数组的默认初始容量是16,如果字符数组长度不够用自动增长1倍
2、StringBuffer 与 StringBuillder的区别
2.1、相同点
1.两个类都是字符串缓冲类
2.两个类的方法都是一样的
2.2、不同点
1.StringBuffer是线程安全的,操作效率低,StringBuillder是非线程安全的,操作效率高.
2.StringBuffer出现jdk1.0的,StringBuillder是jdk1.5的时候出现的
推荐使用:StringBuillder,因为操作效率高.
3、StringBuffer和String的区别
1、String对象是不可变的对象,当我们每次操作string都会重写新建对象来保存值
2、StringBuffer对象一旦实例化,只对这一个对象操作
package com.bw.string; public class Demo4 {
public static void main(String[] args) {
String str="abc";
StringBuffer sb=new StringBuffer("abc");
Runtime runtime=Runtime.getRuntime();
long startTime=System.currentTimeMillis();
long startfreeMemory=runtime.freeMemory();
for(int i=0;i<10000;i++){
//str+=i; //运行结果:操作耗时:492ms,内存消耗:8161KB
sb.append(i); //运行结果:操作耗时:10ms,内存消耗:147KB
//重新再运行的结果也是:StringBuffer的效率比String的高
}
long endfreeMemory=runtime.freeMemory();
long endTime=System.currentTimeMillis(); System.out.println("操作耗时:"+(endTime-startTime)+"ms,"+"内存消耗:"+(startfreeMemory-endfreeMemory)/1024+"KB");
}
}
4、StringBuffer下的常用方法(函数)
4.1、容器具备的行为
4.1.1、增加
append(boolean b) :可以添加任意类型的数据到容器中
insert(int offset, boolean b):指定插入的索引值,插入对应的内容
4.1.2、删除
delete(int start, int end) :根据指定的开始与结束的索引值删除对应内容
deleteCharAt(int index):根据指定的索引删除一个字符
4.1.3、修改
replace(int start, int end, String str) :根据开始和结束的两个索引值,替换对应的内容。
reverse() :倒序
setCharAt(int index, char ch) :根据指定的索引值,替换一个字符
substring(int start, int end) :根据指定的开始和结束的索引值,来截取对应的字符串
ensureCapacity(int minimumCapacity):确保容量至少等于规定的最小值 ensureCapacity的使用,在中间靠下的位置(第四点)
4.1.4、查看
indexOf(String str) :返回指定子字符串第一次出现的字符串内的索引
lastIndexOf(String str) :返回指定子字符串最右边(即最后)出现的字符串内的索引
capacity() :返回当前容量 capacity()的使用详解
length() :返回长度(字符数)
charAt(int index) :返回指定索引值对应的(一个)字符
toString():返回表示此顺序中的数据的字符串
5、例子
package com.dhb.code; public class Demo6 {
public static void main(String[] args) {
//先使用StringBuffer无参构函数创建一个字符串缓冲类
StringBuffer sb=new StringBuffer(); /** 添加 */
sb.append("abcjavadefg").append("QWE");
sb.append(true);
System.out.println(sb); //运行结果:abcjavadefgQWEtrue
sb.insert(1,"sb.杨桃");
System.out.println(sb); //结果:asb.杨桃bcjavadefgQWEtrue /** 删除 */
sb.delete(1,3);
System.out.println(sb); //运行结果:a.杨桃bcjavadefgQWEtrue
sb.deleteCharAt(1);
System.out.println(sb);//结果:a杨桃bcjavadefgQWEtrue /** 修改 */
sb.replace(1, 4,"二狗子");
System.out.println(sb); //运行结果:a二狗子cjavadefgQWEtrue
sb.reverse();
System.out.println(sb); //结果:eurtEWQgfedavajc子狗二a
sb.setCharAt(1, '陈');
System.out.println(sb); //结果:e陈rtEWQgfedavajc子狗二a String s = sb.substring(16,19);
System.out.println(s);//结果:子狗二 /** 查看 */
int i = sb.indexOf("狗");
System.out.println("查看字符数组的长度:"+sb.length());//长度为20
System.out.println(i); //运行结果:17
System.out.println(sb.lastIndexOf("a")); //结果:19
System.out.println(sb.charAt(2));//结果:r
System.out.println(sb.capacity());//结果:34 默认容量是16,该字符数组的长度为20,20>16,所以容量增加了一倍,即:(当前容量+1)*2。 (16+1)*2=34
System.out.println(sb.toString());//结果:e陈rtEWQgfedavajc子狗二a
}
}
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:http://www.cnblogs.com/dshore123/p/8968801.html 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |
G
M
T
| 检测语言 世界语 中文简体 中文繁体 丹麦语 乌克兰语 乌兹别克语 乌尔都语 亚美尼亚语 伊博语 俄语 保加利亚语 僧伽罗语 克罗地亚语 冰岛语 加利西亚语 加泰罗尼亚语 匈牙利语 南非祖鲁语 卡纳达语 印地语 印尼巽他语 印尼爪哇语 印尼语 古吉拉特语 哈萨克语 土耳其语 塔吉克语 塞尔维亚语 塞索托语 威尔士语 孟加拉语 宿务语 尼泊尔语 巴斯克语 布尔语(南非荷兰语) 希伯来语 希腊语 德语 意大利语 意第绪语 拉丁语 拉脱维亚语 挪威语 捷克语 斯洛伐克语 斯洛文尼亚语 斯瓦希里语 旁遮普语 日语 格鲁吉亚语 毛利语 法语 波兰语 波斯尼亚语 波斯语 泰卢固语 泰米尔语 泰语 海地克里奥尔语 爱尔兰语 爱沙尼亚语 瑞典语 白俄罗斯语 立陶宛语 索马里语 约鲁巴语 缅甸语 罗马尼亚语 老挝语 芬兰语 苗语 英语 荷兰语 菲律宾语 葡萄牙语 蒙古语 西班牙语 豪萨语 越南语 阿塞拜疆语 阿尔巴尼亚语 阿拉伯语 韩语 马其顿语 马尔加什语 马拉地语 马拉雅拉姆语 马来语 马耳他语 高棉语 齐切瓦语 | 世界语 中文简体 中文繁体 丹麦语 乌克兰语 乌兹别克语 乌尔都语 亚美尼亚语 伊博语 俄语 保加利亚语 僧伽罗语 克罗地亚语 冰岛语 加利西亚语 加泰罗尼亚语 匈牙利语 南非祖鲁语 卡纳达语 印地语 印尼巽他语 印尼爪哇语 印尼语 古吉拉特语 哈萨克语 土耳其语 塔吉克语 塞尔维亚语 塞索托语 威尔士语 孟加拉语 宿务语 尼泊尔语 巴斯克语 布尔语(南非荷兰语) 希伯来语 希腊语 德语 意大利语 意第绪语 拉丁语 拉脱维亚语 挪威语 捷克语 斯洛伐克语 斯洛文尼亚语 斯瓦希里语 旁遮普语 日语 格鲁吉亚语 毛利语 法语 波兰语 波斯尼亚语 波斯语 泰卢固语 泰米尔语 泰语 海地克里奥尔语 爱尔兰语 爱沙尼亚语 瑞典语 白俄罗斯语 立陶宛语 索马里语 约鲁巴语 缅甸语 罗马尼亚语 老挝语 芬兰语 苗语 英语 荷兰语 菲律宾语 葡萄牙语 蒙古语 西班牙语 豪萨语 越南语 阿塞拜疆语 阿尔巴尼亚语 阿拉伯语 韩语 马其顿语 马尔加什语 马拉地语 马拉雅拉姆语 马来语 马耳他语 高棉语 齐切瓦语 |
文本转语音功能仅限200个字符
| 选项 : 历史 : 反馈 : Donate | 关闭 |






