当前位置: 首页 > news >正文

JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder...

JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder


讲完String,我们来聊聊他的小兄弟

一.StringBuffer概述

关于StringBuffer这个对象,Buffer是什么意思?缓冲区的意思,String一旦初始化时不可以被改变的,而StringBuffer是可以的,这就是区别,特点:

  • StringBuffer是一个容器
  • 可以字节操作多个数据类型
  • 最终会通过toString方法变成字符串

这里写图片描述

  • 存储

    StringBuffer append():将指定的数据作为参数添加到已有数据的结尾处

  • 删除

    StringBuffer delete(start , end)删除缓冲区的数据,包含start,不包含end
    StringBuffer deleteCharAt(index)删除指定位置的字符

  • 获取

    char charAt(int index)
    int indexOf(String str)
    int lasrIndexOf(String str)
    String subString(int start,int end)

  • 修改

    StringBuffer replace(start,end,string)
    void setChatAt(int dex,char ch)

  • 反转

    String reverse()

  • 将缓存区的数据存储到数组中

    void getChars(int srcBegin,int srcEnd ,char[] dst,int dstBegin)

有着这样的特性,那我们逐步来讲一下

package com.lgl.hellojava;

//公共的   类   类名
public class HelloJJAVA {

    public static void main(String[] args) {

        /**
         * StringBuffer
         */
        StringBuffer sb = new StringBuffer();
        StringBuffer append = sb.append(78);
        sop(sb == append);
        sop(sb.toString());
        sop(append.toString());

    }

    /**
     * 输出
     */
    public static void sop(Object obj) {
        System.out.println(obj);
        }

    }

这算是比较常见的吧,我们没必要这么麻烦,我们可以简化

sb.append("abc").append(36);
sop(sb.toString());

我们可以直接输出字符串

这里写图片描述

这个连续的方法叫做方法调用链

因为StringBuffer的特性,我们可以在里面插入数据,我现在想在a后面插入字符串,怎么实现呢?

sb.append("abc").append(36);
sb.insert(1, "lgl");
sop(sb.toString());

没错。insert,他的两个参数,一个是下标,一个是数据,这样,我们就插入成功了

这里写图片描述

我们再来聊一下删除


    /**
     * 删除
     */
    public static void method_delete() {
        StringBuffer sb = new StringBuffer("abcdefg");

        sop(sb.toString());
        // 删除bc
        // sop(sb.delete(1, 3).toString());
        // 删除d
        sop(sb.deleteCharAt(3));
        // 清空缓冲区
        sop("all:" + sb.delete(0, sb.length()));

    }

其实这些都是比较简单的

这里写图片描述

OK,按照顺序我们现在讲获取了,其实我们在将String的时候就已经讲过了,这里就不多说了。我们说修改,修改是比较经典的,修改数据我们这样写


    /**
     * 修改
     */
    public static void method_update() {
        StringBuffer sb = new StringBuffer("abcdefg");
        // 替换一部分
        sop(sb.replace(1, 4, "java"));
        // 替换一个
        sb.setCharAt(sb.length() - 1, 'k');
        sop(sb.toString());
    }

结果

这里写图片描述

OK,修改成功,将缓冲区存储到数组中

/**
     * 将缓存区的数据存储到数组中
     */
    public static void method_getchar() {
        StringBuffer sb = new StringBuffer("abcdefg");
        char[] chs = new char[4];
        /**
         * 从1开始,4结束,存在chs里,从头1开始存
         */
        sb.getChars(1, 4, chs, 1);

        for (int i = 0; i < chs.length; i++) {
            sop("char[" + i + "] = " + chs[i] + ";");
        }
    }

输出的结果,嘿嘿

这里写图片描述

二.StringBuilder

这个在JDK1.5之后才有

  • StringBuffer:线程同步
  • StringBuilder:线程不同步

开发中不建议使用StringBuilder

我们看一下他的API说明:

这里写图片描述

用法差不多,就不多讲了,本篇闲到这里

有兴趣加群:555974449

相关文章:

  • 智能资产配置特训班课程过半,这些内容关键点你不能错过
  • PyDev (eclipse的python插件)
  • 数据库优化
  • 【51CTO学院三周年】我的数据处理工程师入门之路
  • download使用浅析
  • 学习进度 15
  • linux系统下搭建php环境之-Discuz论坛
  • zabbix-activemode
  • 寻找最小可行化产品背后的真理
  • 继承的多种方式和优缺点
  • HDU1412 {A} + {B}
  • usermod命令和用户密码管理
  • socket传输过程
  • 一次反向代理负载均衡的处理过程
  • 魔方NewLife.Cube升级v2.0
  • 分享一款快速APP功能测试工具
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 4. 路由到控制器 - Laravel从零开始教程
  • Angular 2 DI - IoC DI - 1
  • C学习-枚举(九)
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • ES学习笔记(12)--Symbol
  • JavaScript DOM 10 - 滚动
  • Javascript 原型链
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • js对象的深浅拷贝
  • js面向对象
  • js数组之filter
  • Linux CTF 逆向入门
  • PHP 7 修改了什么呢 -- 2
  • ReactNativeweexDeviceOne对比
  • TypeScript实现数据结构(一)栈,队列,链表
  • use Google search engine
  • 从零开始的无人驾驶 1
  • 给初学者:JavaScript 中数组操作注意点
  • 关于Flux,Vuex,Redux的思考
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 今年的LC3大会没了?
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 入口文件开始,分析Vue源码实现
  • 我有几个粽子,和一个故事
  • 线上 python http server profile 实践
  • 小程序 setData 学问多
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 中文输入法与React文本输入框的问题与解决方案
  • zabbix3.2监控linux磁盘IO
  • ​MySQL主从复制一致性检测
  • #Linux(权限管理)
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (¥1011)-(一千零一拾一元整)输出
  • (1) caustics\
  • (33)STM32——485实验笔记
  • (9)目标检测_SSD的原理
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测