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 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |
|
检测语言 世界语 中文简体 中文繁体 丹麦语 乌克兰语 乌兹别克语 乌尔都语 亚美尼亚语 伊博语 俄语 保加利亚语 僧伽罗语 克罗地亚语 冰岛语 加利西亚语 加泰罗尼亚语 匈牙利语 南非祖鲁语 卡纳达语 印地语 印尼巽他语 印尼爪哇语 印尼语 古吉拉特语 哈萨克语 土耳其语 塔吉克语 塞尔维亚语 塞索托语 威尔士语 孟加拉语 宿务语 尼泊尔语 巴斯克语 布尔语(南非荷兰语) 希伯来语 希腊语 德语 意大利语 意第绪语 拉丁语 拉脱维亚语 挪威语 捷克语 斯洛伐克语 斯洛文尼亚语 斯瓦希里语 旁遮普语 日语 格鲁吉亚语 毛利语 法语 波兰语 波斯尼亚语 波斯语 泰卢固语 泰米尔语 泰语 海地克里奥尔语 爱尔兰语 爱沙尼亚语 瑞典语 白俄罗斯语 立陶宛语 索马里语 约鲁巴语 缅甸语 罗马尼亚语 老挝语 芬兰语 苗语 英语 荷兰语 菲律宾语 葡萄牙语 蒙古语 西班牙语 豪萨语 越南语 阿塞拜疆语 阿尔巴尼亚语 阿拉伯语 韩语 马其顿语 马尔加什语 马拉地语 马拉雅拉姆语 马来语 马耳他语 高棉语 齐切瓦语 |
世界语 中文简体 中文繁体 丹麦语 乌克兰语 乌兹别克语 乌尔都语 亚美尼亚语 伊博语 俄语 保加利亚语 僧伽罗语 克罗地亚语 冰岛语 加利西亚语 加泰罗尼亚语 匈牙利语 南非祖鲁语 卡纳达语 印地语 印尼巽他语 印尼爪哇语 印尼语 古吉拉特语 哈萨克语 土耳其语 塔吉克语 塞尔维亚语 塞索托语 威尔士语 孟加拉语 宿务语 尼泊尔语 巴斯克语 布尔语(南非荷兰语) 希伯来语 希腊语 德语 意大利语 意第绪语 拉丁语 拉脱维亚语 挪威语 捷克语 斯洛伐克语 斯洛文尼亚语 斯瓦希里语 旁遮普语 日语 格鲁吉亚语 毛利语 法语 波兰语 波斯尼亚语 波斯语 泰卢固语 泰米尔语 泰语 海地克里奥尔语 爱尔兰语 爱沙尼亚语 瑞典语 白俄罗斯语 立陶宛语 索马里语 约鲁巴语 缅甸语 罗马尼亚语 老挝语 芬兰语 苗语 英语 荷兰语 菲律宾语 葡萄牙语 蒙古语 西班牙语 豪萨语 越南语 阿塞拜疆语 阿尔巴尼亚语 阿拉伯语 韩语 马其顿语 马尔加什语 马拉地语 马拉雅拉姆语 马来语 马耳他语 高棉语 齐切瓦语 |
java基础20 StringBuffer缓冲类的更多相关文章
- Java基础-日期格式化DateFormat类简介
Java基础-日期格式化DateFormat类简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.DateFormat类概述 DateFormat 是日期/时间格式化子类的抽象 ...
- Java 基础 常用API (Object类,String类,StringBuffer类)
Java API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底 ...
- Java基础(四) StringBuffer、StringBuilder原理浅析
StringBuilder与StringBuffer作用就是用来处理字符串,但String类本身也具备很多方法可以用来处理字符串,那么为什么还要引入这两个类呢? 关于String的讲解请看Java基础 ...
- JAVA基础第三章-类与对象、抽象类、接口
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- Java基础--常用API--集合类相关API
一.泛型 1.泛型的本质是将类型参数化,即将数据类型作为参数. 2.泛型可以在编译期进行检查,其所有的强制转换是隐式且自动的,提高了代码的安全性. 3.泛型可以用在类(泛型类).接口(泛型接口).方法 ...
- Java基础语法(自定义类、ArrayList集合)
Java基础语法 今日内容介绍 u 自定义类 u ArrayList集合 第1章 引用数据类型(类) 1.1 引用数据类型分类 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类 ...
- java基础(二) -对象和类
Java 对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为.例如,一条狗是一 ...
- [ 转载 ] Java基础10--关于Object类下所有方法的简单解析
关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直 ...
- Java之String,StringBuffer,StringBuilder类
在 java 语言中, 用来处理字符串的的类常用的有 3 个: String.StringBuffer.StringBuilder. 它们的异同点: 1) 都是 final 类, 都不允许被继承; 2 ...
随机推荐
- Luogu 1063 能量项链(动态规划)
Luogu 1063 能量项链(动态规划) Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某 ...
- linux内核增加系统调用--Beginner's guide
Linux内核中设置了一组用于实现系统功能的子程序,称为系统调用.系统调用和普通库函数调用非常相似明知是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态. ...
- mac 安装 pecl
下载 pear curl -O http://pear.php.net/go-pear.phar sudo php -d detect_unicode= go-pear.phar 配置和安装 pear ...
- webservice的接口协议(HTTPClient 、RestTemplate HttpURLConnection)
HTTP协议时Internet上使用的很多也很重要的一个协议,越来越多的java应用程序需要通过HTTP协议来访问网络资源. HTTPClient提供的主要功能: 1.实现了所有HTTP的方法(GET ...
- Nginx记录-Nginx介绍
Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 ...
- study later
二分图匹配.左偏树.替罪羊树 四边形不等式优化 http://txhwind.blog.163.com/blog/static/203524179201242021458422/ http://www ...
- iscroll demo
下面是自己找网上资料写的一个小demo,基础的属性和方法都有用到,但是用法还不是很标准,github上的demo用法很标准,外面一个wrapper,里面还得有一个scroller,如果要做跑马灯效果还 ...
- SVN自动更新-win平台
把项目给外包做,他们天天整个ftp传来传去,上传一次还要到处翻View和Controller,还有漏传的情况,简直low到不行.看不下去了,就准备整个svn.虽然svn解决了上传的问题,但是自动发布还 ...
- HDU 4690 EBCDIC 2013 Multi-University Training Contest 9
解题报告:一个模拟题,有两张表格,然后输入一个字符在第一章表格中的位置,让你找出这个字符在第二章表对应的位置. 我欧诺个的是暴力打表,输了两百多个数字,时间复杂度直接降到O(1),这题觉得比较坑的就是 ...
- 【CC2530强化实训04】定时器间隔定时实现按键N连击
[CC2530强化实训04]定时器间隔定时实现按键N连击 [题目要求] 2018年全国职业院校技能大赛“物联网技术应用”国赛(高职组)中关于感知层开发的难度陡然增大,三个题目均在Zigbee ...