StringBuffer (字符串缓冲对象)

  概念:用于表示可以修改的字符串,称为字符串缓冲对象

  作用:使用运算符的字符串将自动创建字符串缓冲对象

     例如: str1+str2的操作,实际上是把str1与str2都创建成StringBuffer类对象

  构造方法:详见API

    StringBuffer():创建一个空的StringBuffer对象,默认保留16个字符的缓冲空间

    StringBuffer(String str):根据字符串str的内容创建StringBuffer对象,并默认保留 16 个字符的缓冲空间

    StringBuffer(int capacity):创建一个空的StringBuffer对象,缓冲空间大小由capacity指定

  方法:前面是返回值 + 方法

    StringBuffer insert(int index, 数据值):将x插入到索引为index的位置,数据值可以为任何类型的数据

    StringBuffer append(类型 数据):将类型的参数以字符串的表示形式追加到序列

    int length():获得当前StringBuffer对象的长度

    void setCharAt(int index, char ch):使用 ch 指定的新值替换 index指定的位置上的字符

    String toString():转换为字符串形式

    StringBuffer reverse():将当前StringBuffer对象中的字符序列倒置

    StringBuffer delete(int start, int end):删除当前对象中从start位置开始直到 end 指定的索引位置的字符序列

    StringBuffer deleteCharAt(int index):将删除 index 指定的索引处的字符

    StringBuffer replace(int start, int end, String str):使用一组字符替换另一组字符,从 start位置开始替换,直到end位置结束

  特点:Java中一旦创建了字符串就不能直接更改,这就是字符String的不变性

     StringBuffer类正是针对此问题而提供的字符可变序列;和String类的最大区别就是可以更改

StringBuilder

  概念:JDK1.5以后提供的新的字符缓冲区

  作用:StringBuffer一样

  区别:          StringBuffer  StringBuilder

      线程是否安全   安全       不安全

      效率       相对低      相对高 

代码示例

 package summary2;

 //字符缓冲区
public class StringBufferClass
{
static void StringBuffer()
{
String s = "StringBuffer";
StringBuffer sb = new StringBuffer(s); //根据指定字符串创建StringBuffer对象
sb.replace(6,12,""); //根据下标替换Buffer为空、得到String
String str = sb.toString(); //将sb类转换成字符串str
for (int i=0;i<200000;i++) //为测试效率循环添加数据
{
sb.append(str); //序列最后面添加对象str
sb.insert(0,str); //在下标0的位置插入str
}
}
static void StringBuilder() //创建StringBuilder方法、方法体和StringBuffer相同
{
String s = "StringBuffer";
StringBuilder sb = new StringBuilder(s);
sb.replace(6,12,"");
String str = sb.toString();
for (int i=0;i<200000;i++)
{
sb.append(str);
sb.insert(0,str);
}
}
public static void main(String[] args)
{
long startTime1 = System.currentTimeMillis(); //获取开始时间、精度位纳秒
StringBuffer(); //调用StringBuffer()
long endTime1 = System.currentTimeMillis(); //获取结束时间、精度位纳秒
System.out.println("StringBuffer运行时间:"+(endTime1-startTime1)+"ms");
long startTime2 = System.currentTimeMillis(); //获取开始时间、精度位纳秒
StringBuilder(); //调用StringBuilder()
long endTime2 = System.currentTimeMillis(); //获取结束时间、精度位纳秒
System.out.println("StringBuilder运行时间:"+(endTime2-startTime2)+"ms");
}
}

Java的StringBuffer和StringBuilder类的更多相关文章

  1. Java的 StringBuffer 和 StringBuilder 类

    https://www.runoob.com/java/java-stringbuffer.html 返回值是它本身的类, 所以可以链式调用! 总结就是可以直接在对象上使用 , 可以链式使用, buf ...

  2. Java StringBuffer和StringBuilder类

    Java StringBuffer和StringBuilder类 当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类. 和String类不同的是,StringBu ...

  3. Java 12 - Java StringBuffer和StringBuilder类

    Java StringBuffer和StringBuilder类 当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类. 和String类不同的是,StringBu ...

  4. Java StringBuffer 和 StringBuilder 类

    当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类. 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够 ...

  5. JAVA String、StringBuffer、StringBuilder类解读

    JAVA String.StringBuffer.StringBuilder类解读 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作 ...

  6. Java ——String 类 StringBuffer 和 StringBuilder类 随机字符

    本节重点思维导图 String 类 创建字符串 String str = "I love ai"; 在代码中遇到字符串常量时,"I love ai",编译器会使 ...

  7. String、StringBuffer和StringBuilder类的区别

    Java提供了String.StringBuffer和StringBuilder类来封装字符串,并提供了一系列操作字符串对象的方法. 它们的相同点是都用来封装字符串:都实现了CharSequence接 ...

  8. StringBuffer 和 StringBuilder 类

    当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类. 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够 ...

  9. AJPFX关于StringBuffer,StringBuilder类 总结(一)

    StringBuffer,StringBuilder类 StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高 StringBuffer:概述1) ...

随机推荐

  1. 为Linux虚拟机设置网络

    安装虚拟机的时候为了使用方便我们除了需要设置静态ip为了能够让虚拟机也能够上网我们需要设置虚拟机网络 当然也可以使用虚拟机和主机共享上网,这个比较简单,这里就不说了,现在我们来通过桥接的方式为虚拟机设 ...

  2. c# 把对象加入队列,对象为全局变量,对象改变队列值也跟着改变

    若程序把对象加入队列,对象为全局变量,对象改变队列值也跟着改变,如下: filecontent  为两个字段的属性值. class FileContent { // public string Htt ...

  3. spring/spirng boot添加fluent日志-aop

    此项目以aop的形式添加fluent 日志 sample介绍 spring-mvc-aop-helloworld 为spring mvc aop condition toolcommontest 为s ...

  4. jx9脚本引擎BUG修复

    BUG1:    rc = WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), pOutput, (DWORD)nOutputLen, 0, 0);        修 ...

  5. sqli-labs:7,导入导出;8-10 延时注入

    1,Load_file()导出文件 使用条件: A.必须有权限读取并且文件必须完全可读(and (select count(*) from mysql.user)>0/* 如果结果返回正常,说明 ...

  6. maven web+spring mvc项目没有出现src/main/java路径

    直接在main 文件夹下创建java可以解决 https://www.cnblogs.com/zhujiabin/p/6343462.html

  7. linux- Fedora25 下 解决anacondas3 与ibus冲突问题

    问题:当我们安装了anaconda3之后,会发现ibus-setup进不去. 原因: 是因为ibus-setup的python应该使用python2. 而当我们安装了anaconda3之后,调用pyt ...

  8. default(T) 和 typeof 和 GetType()

    一.default(T) 在泛型编成中如果不限制T类型参数是值类型或引用类型的话 你程序内部可能会出现错误,因为值类型不允许NULL.所以default用来获取一个类型的默认值,对于值类型得到new ...

  9. wireshark源码分析 一

    因为手头的项目需要识别应用层协议,于是想到了wireshark,打算在项目中集成wireshark协议分析代码.在官网上下了最新版的wireshark源代码,我的天啊,200多M,这么多代码文件怎么看 ...

  10. Windows-universal-samples学习笔记系列五:Custom user interactions

    Custom user interactions Basic input Complex inking Inking Low latency input Simple inking Touch key ...