StringBuffer类

  1. java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删

    很多方法与String相同,但StringBuffer是可变长度的 StringBuffer是一个容器

    • StringBuffer 的直接父类是 AbstractStringBuilder

    • StringBuffer 实现了 Serializable,即StringBuffer的对象可以串行化

    • 在父类 AbstractStringBuilder 有属性 char[] value ,不是final

      该 value 数组存放 字符串内容,因此存放在堆中的

    • StringBuffer 是一个 final 类,不能被继承

    • 因为StringBuffer 字符内容是存在 char[] value,所以再变化(增加/删除)时,不用每次

      都更换地址(即不是每次创建对象),所以效率高于 String

  2. String VS StringBuffer

    • String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,

      效率极低 //private final char value[];

    • StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以

      更新内容,不用每次更新地址,效率极高 //char[] value; //这个放在堆

  3. StringBuffer的构造器

    • StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符

    • StringBuffer(CharSequence seq) public java.long.StringBuilder(CharSequence seq) 构造一个

      字符串缓冲区,它包含与其指定的CharSequence 相同的字符。 (不常用)

    • StringBuffer(int capacity) //capacity[容量] 构造一个不带字符,但具有指定初始容量的字符串缓冲区。

      即对 char[] 大小进行指定

    • StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容

    //1. 创建一个大小为 16的 char[] ,用于存放字符内容
    StringBuffer stringBuffer = new StringBuffer();
    //2. 通过构造器指定 char[] 大小
    StringBuffer sTringBuffer = new StringBuffer(100);
    //3. 通过给一个String 创建 StringBuffer,char[] 大小就是 str.length() + 16
    StringBuffer hello = new StringBuffer("hello");
  4. String 和 StringBuffer 相互转换

    // String -> StringBuffer
    String str = "hello tom";
    // 方式1
    // 注意:返回的才是StringBuffer对象,对str 本身没有影响
    StringBuffer stringBuffer = new StringBuffer(str);
    //方式2 使用的时append() 方法
    StringBuffer stringBuffer1 = new StringBuffer();
    stringBuffer1 = stringBuffer1.append(str);
    // StringBuffer -> String
    StringBuffer stringBuffer3 = new StringBuffer("好好学习");
    //方法1 使用StringBuffer提供的 toString方法
    String s = stringBuffer3.toString();
    //方式2:使用构造器来搞定
    String s1 = new String(stringBuffer3);
  5. StringBuffer类常用方法

    StringBuffer s = new StringBuffer("hello");
    //增
    s.append(',');
    s.append("张三丰");
    s.append("赵敏").append(100).append(true).append(10.5);
    System.out.println(s); //删
    /*
    删除索引为 >=start && <end 处的字符
    删除 11-14的字符 [11,14)
    */
    s.delete(11,14);
    System.out.println(s); //改
    //使用 周芷若 替换 索引9-11的字符 [9,11)
    s.replace(9,11,"周芷若");
    System.out.println(s); //查找
    //查找指定的字符串在字符串中第一次出现的索引,如果找不到返回-1
    int indexOf = s.indexOf("张三丰");
    System.out.println(indexOf); //插
    //在索引为9的位置插入 赵敏 ,原来索引为9的内容自动后移
    s.insert(9,"赵敏");
    System.out.println(s); //长度
    System.out.println(s.length());
    System.out.println(s);
  6. 练习

    String price = "8123564.59";
    StringBuffer sb = new StringBuffer(price);
    //int i = sb.lastIndexOf(".");
    //sb = sb.insert(i - 3,",");
    for (int i = sb.lastIndexOf("."); i > 3; i -= 3) {
    sb = sb.insert(i - 3,",");
    }
    System.out.println(sb);
    //运行结果:8,123,564.59

3、StringBuffer类的更多相关文章

  1. StringBuffer类的功能

    StringBuffer类 1.添加功能 public StringBuffer append(String str):可以把任意类型数据添加到缓冲区,并返回缓冲区域 public StringBuf ...

  2. String类和StringBuffer类的区别

    首先,String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringB ...

  3. java之StringBuffer类详解

    StringBuffer 线程安全的可变字符序列. StringBuffer源码分析(JDK1.6): public final class StringBuffer extends Abstract ...

  4. Java api 入门教程 之 JAVA的StringBuffer类

    StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存 ...

  5. StringBuffer类

    String的内容一旦声明则不可改变,如果改变,则改变的肯定是String的引用地址. 如果一个字符串要被经常改变,则就必须使用StringBuffer类. 在String类中可以通过“+”进行字符串 ...

  6. String类和StringBuffer类的方法

    一.String类的方法 public char charAt(int index)          返回字符串index个字符 public int length()         返回字符串长 ...

  7. android StringBuffer类的使用

    参考 http://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html StringBuffer类和String一样,也用来代表字符串, ...

  8. 常用类库——StringBuffer类

    掌握目标: 1,掌握StringBuffer与String的区别. 2,掌握StringBuffer常用方法. 3,掌握StringBuffer实际应用. 1,认识StringBuffer. Stri ...

  9. StringBuffer类 和 StringBuilder类

    上一篇中讲解了String类的用法.那么String有什么特点呢? 字符串特点:字符串是常量,其值在创建后就不能被修改.字符串的内容一旦发生变化,就会创建一个新的对象. 代码验证字符串特点: publ ...

  10. [Java] StringBuffer类

    http://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html 注: StringBuffer类和String一样,也用来代表字符串, ...

随机推荐

  1. SuperSocket 1.6 创建一个简易的报文长度在头部的Socket服务器

    我们来做一个头为6位报文总长度,并且长度不包含长度域自身的例子.比如这样的Socket报文000006123456. 添加SuperSocket.Engine,直接使用Nuget搜索SuperSock ...

  2. browserify的standalone的含义

    白话:就像Jquery的$, 把你打包后的函数挂在window下你指定的名字下 废话:白话看不懂,就看下面的废话,你不得不花更多时间理解--standalone AAA的含义$ browserify ...

  3. labview入门到出家10(进阶)——CAN通讯

    ​          讲完串口,这边再讲一个labveiw工控程序中比较常用的CAN通讯吧.很久没有写过CAN通讯的程序了,网上一搜就是什么现场总线,控制器局域网总线,然后一堆复杂的协议.在这里还是一 ...

  4. MySQL经典50题

    1.查询01课程比02课程成绩高的学生的信息及课程分数 #1.1查询01课程与02课程的课程表: select student_id, score as c1_score from score whe ...

  5. python+tkinter 简单的登录窗口demo

    一个简单的登录窗口布局,可以用于日常快速搭建一个简单的窗口类. from tkinter import * import tkinter.messagebox class LoginUi: def _ ...

  6. Spring Bean 标签解析

    上一篇文章讲到了标签在 parseDefaultElement 方法中进行解析,本篇文章将讲解这部分内容 bean 标签解析 查看 processBeanDefinition 方法,针对各个操作作具体 ...

  7. CentOS 定时计划任务设置

    一.安装crontab服务并设置开机自启 yum install crontabs (centos默认就会带,一般不需要安装) systemctl enable crond (设为开机启动) syst ...

  8. ServerlessBench 2.0:华为云联合上海交大发布Serverless基准测试平台

    摘要:华为云联合上海交大重磅推出ServerlessBench 2.0,为社区提供涵盖12类基准测试用例.新增5大类跨平台测试用例.4大类关键特性指标.且多平台兼容的Serverless开放基准测试集 ...

  9. 基于Vue.js2.6结合h5来实现视频播放画中画技术(Picture-in-Picture)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_125 在开发基于vue.js的在线视频教育平台的时候,我们会注意一个小问题,就是如果用户在观看播放视频的同时,也会往下拖动窗口浏览 ...

  10. C# 从补码中获取有符号数的实际数值

    C# 从补码中获取有符号数的实际数值 原理 计算机存储数据时,默认是存储数据的补码.有符号的数粗存在符号位(最高位). 这里就会提到原码.反码.补码的概念. 原码:用符号位和数值表示带符号数,正数的符 ...