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 关闭

java基础20 StringBuffer缓冲类的更多相关文章

  1. Java基础-日期格式化DateFormat类简介

    Java基础-日期格式化DateFormat类简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.DateFormat类概述 DateFormat 是日期/时间格式化子类的抽象 ...

  2. Java 基础 常用API (Object类,String类,StringBuffer类)

    Java API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底 ...

  3. Java基础(四) StringBuffer、StringBuilder原理浅析

    StringBuilder与StringBuffer作用就是用来处理字符串,但String类本身也具备很多方法可以用来处理字符串,那么为什么还要引入这两个类呢? 关于String的讲解请看Java基础 ...

  4. JAVA基础第三章-类与对象、抽象类、接口

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  5. Java基础--常用API--集合类相关API

    一.泛型 1.泛型的本质是将类型参数化,即将数据类型作为参数. 2.泛型可以在编译期进行检查,其所有的强制转换是隐式且自动的,提高了代码的安全性. 3.泛型可以用在类(泛型类).接口(泛型接口).方法 ...

  6. Java基础语法(自定义类、ArrayList集合)

    Java基础语法 今日内容介绍 u 自定义类 u ArrayList集合 第1章 引用数据类型(类) 1.1 引用数据类型分类 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类 ...

  7. java基础(二) -对象和类

    Java 对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为.例如,一条狗是一 ...

  8. [ 转载 ] Java基础10--关于Object类下所有方法的简单解析

    关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直 ...

  9. Java之String,StringBuffer,StringBuilder类

    在 java 语言中, 用来处理字符串的的类常用的有 3 个: String.StringBuffer.StringBuilder. 它们的异同点: 1) 都是 final 类, 都不允许被继承; 2 ...

随机推荐

  1. springboot项目添加jsp支持

    一.创建springboot项目 使用 http://start.spring.io/ 快速创建一个springboot项目下载并导入 二.添加依赖 在pom.xml中添加支持jsp的依赖如下: &l ...

  2. ---web模型 --mvc和模型--struts2 入门

    关于web模型: 早期的web 应用主要是静态页丽的浏览〈如新闻的制监),随着Internet的发展,web应用也变得越来越复杂,不仅要 和数据库进行交互 ,还要和用户进行交互,由此衍生了各种服务器端 ...

  3. Android Fragment 替代方案

    refs: Square 开源库Flow和Mortar的介绍https://github.com/hehonghui/android-tech-frontier/tree/master/android ...

  4. [Codeforces Gym] 100162B Circle of Stones

    题意: 桌子上有 n 个石头围成一个环.每个石头都有一种颜色.每种颜色可以由小写英文字母表示.如果每一对相邻的石头都是不同颜色的,则称这 n 个石头构成的环是美丽的.现在,你可以从这 n 个石头中拿走 ...

  5. 【agc001d】Arrays and Palindrome

    Portal -->agc001D Description 给你一个\(m\)个数的排列\(A\),这个\(A\)中元素的顺序可以随便调换,\(A\)中的元素的和为\(n\),现在要你构造一个数 ...

  6. Dubbo、Zookeeper集群搭建及Rose使用心得(二)

    上篇讲了一下配置,这次主要写一下这个框架开发的大概流程.这里以实现 登陆 功能为例. 一.准备工作 1.访问拦截器 用户在进行网站访问的时候,有可能访问到不存在的网页,所以,我们需要把这些链接重新定向 ...

  7. 解决Maven提示:Could not read settings.xml

    在Eclipse中配置maven时,提示错误:Could not read settings.xml.用户配置无法生效. 1.首先检查自己的settings.xml配置文件,发现在<!----& ...

  8. Java基础-方法(method)的应用

    Java基础-方法(method)的应用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 方法就是定义在类中,具有特定功能的一段小程序,方法也称为函数(function),方法可以接 ...

  9. c# lock的误解

    一直以为lock 一个实例就可以了,没想到实例的类型还是有区别的 static object lockObjStatic = new object(); object lockObj = new ob ...

  10. 服务器能ping通ip,通不了域名解决方案

    # 将网卡配置文件配置固定ip后,添加DNS解析,然后重启网卡即可: [root@a ~]# tail -2 /etc/sysconfig/network-scripts/ifcfg-ens160 D ...