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

简介: JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder 讲完String,我们来聊聊他的小兄弟一.

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

目录
相关文章
|
存储 Java API
深入剖析Java Map:不只是存储数据,更是设计艺术的体现!
【10月更文挑战第17天】在Java编程中,Map是一种重要的数据结构,用于存储键值对,并展现了设计艺术的精髓。本文深入剖析了Map的设计原理和使用技巧,包括基本概念、设计艺术(如哈希表与红黑树的空间时间权衡)、以及使用技巧(如选择合适的实现类、避免空指针异常等),帮助读者更好地理解和应用Map。
486 3
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
301 3
|
缓存 JavaScript 前端开发
Java 如何确保 JS 不被缓存
【10月更文挑战第19天】在 Java 中,可以通过设置 HTTP 响应头来确保 JavaScript 文件不被浏览器缓存。方法包括:1. 使用 Servlet 设置响应头,通过 `doGet` 方法设置 `Expires`、`Cache-Control` 和 `Pragma` 头;2. 在 Spring Boot 中配置拦截器,通过 `NoCacheInterceptor` 类和 `WebConfig` 配置类实现相同功能。这两种方法都能确保每次请求都能获取到最新的 JavaScript 内容。
287 1
|
存储 Java
【编程基础知识】 分析学生成绩:用Java二维数组存储与输出
本文介绍如何使用Java二维数组存储和处理多个学生的各科成绩,包括成绩的输入、存储及格式化输出,适合初学者实践Java基础知识。
463 1
|
存储 安全 Java
String StringBuffer StringBuilder 区别详解与对比分析
本文详细解析了Java中String、StringBuffer和StringBuilder的区别,从可变性、线程安全性和性能三个方面进行对比,并结合具体应用场景分析了三者的适用范围。通过性能测试示例展示了它们在字符串拼接时的效率差异,同时提供了实际代码案例帮助理解。总结指出,String适合少量操作或线程安全场景,StringBuffer适用于多线程环境,而StringBuilder则在单线程下性能最优。开发者应根据需求选择合适的类以优化程序性能。文末还附有相关面试资料供参考。
1419 2
|
存储 安全 Java
String、StringBuffer 和 StringBuilder 的区别
【10月更文挑战第21天】String、StringBuffer 和 StringBuilder 都有各自的特点和适用场景。了解它们之间的区别,可以帮助我们在编程中更合理地选择和使用这些类,从而提高程序的性能和质量。还可以结合具体的代码示例和实际应用场景,进一步深入分析它们的性能差异和使用技巧,使对它们的理解更加全面和深入。
788 57
|
存储 缓存 Java
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
371 9
|
存储 分布式计算 Hadoop
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
677 7