Java字符串相关类StringBuffer的用法详解

目录
  • 一、StringBuffer 介绍
  • 二、方法详解
    • 1.构造方法
    • 2.增 StringBuffer append(…)
    • 3.删 StringBuffer delete(int start,int end)
    • 4.改 StringBuffer replace(int start,int end,String str)
    • 5.插入 StringBuffer insert(int offset, · · · )
    • 6.反转 StringBuffer reverse()

一、StringBuffer 介绍

java.lang包下的StringBuffer类,代表着可变的字符序列,可以用来对字符串内容进行增删改操作。同时它是线程安全的,效率称不上高。

StringBuffer类当中的许多方法都是与String相同的,是字符串相关的类,所以我称他为字符串的兄弟…。但是两兄弟也有本质的区别,String不可变的字符序列

二、方法详解

1.构造方法

当我们想要创建StringBuffer类型的对象,必须要使用到构造方法来生成,不同于String类型的可以直接用常量赋值。

接下来就让我来介绍一下StringBuffer的三个构造方法:

①StringBuffer()

使用空参构造方法来创建StringBuffer对象,在底层会得到一个初始化容量大小为 16的字符换缓冲区,而且这个长度是可以不断扩容的,这也体现了可变字符序列的特性。

StringBuffer stringbuffer = new StringBuffer();

②StringBuffer(int size)

当我们需要创建StringBuffer对象时,可以在括号内指定一个大小,从而获得一个指定长度的字符串缓冲区。

比如我们将整数8作为参数传入就能在底层初始化一个容量为8的字符串缓冲区。

StringBuffer stringbuffer = new StringBuffer();

③StringBuffer(String str)

创建StringBuffer对象时,借助构造方法,我们还可以创建一个包含内容的可变字符串序列,只需要将想要的内容作为字符串传入即可;

我们可以传入一个String类型的对象传入:

String a = "abcd";
StringBuffer sb_1 = new StringBuffer(a);

也可以直接传入一个字符串常量:

StringBuffer sb_2 = new StringBuffer("abcd");

效果案例:

/**
 * @author .29.
 * @create 2022-10-07 19:04
 */
public class StringBufferTest {
    public static void main(String[] args) {
        String a = "abcd";
        StringBuffer sb_1 = new StringBuffer(a);
        StringBuffer sb_2 = new StringBuffer("abcd");
        System.out.println(sb_1.toString());
        System.out.println(sb_2.toString());

    }

}

2.增 StringBuffer append(…)

StringBuffer类中提供了许多append()方法,可以用来对字符串进行拼接操作,我们可以来看一看:

通过上述列出来的实例中,我们可以知道,append()方法中,除了String类型外,无论是整形(int,long)、浮点型(float,double),还是布尔类型(boolean)也都可以作为参数传入的。

效果案例:

/**
 * @author .29.
 * @create 2022-10-07 19:04
 */
public class StringBufferTest {
    public static void main(String[] args) {

        StringBuffer sb_3 = new StringBuffer();
        int A = 29;
        long B = 29L;
        float C = 2.9f;
        double D = 29.29;
        boolean E = true;

        sb_3.append(A);
        sb_3.append(" ");
        sb_3.append(B);
        sb_3.append(" ");
        sb_3.append(C);
        sb_3.append(" ");
        sb_3.append(D);
        sb_3.append(" ");
        sb_3.append(E);

        System.out.println(sb_3.toString());

    }

}

3.删 StringBuffer delete(int start,int end)

delete(int start,int end)方法可以用来删除指定位置的元素,删除元素的位置从start参数开始,到end参数前一个位置结束。

效果案例:

/**
 * @author .29.
 * @create 2022-10-07 19:04
 */
public class StringBufferTest {
    public static void main(String[] args) {

        StringBuffer sb_3 = new StringBuffer("0123456789");

        sb_3.delete(0,6);

        System.out.println(sb_3.toString());

    }

}

我们指定从删除的位置从下标0开始,到下标6前一个位置结束

4.改 StringBuffer replace(int start,int end,String str)

这是将指定位置内容替换成指定内容的方法replace(int start,int end,String str),替换的位置依旧是从start下标开始,到end下标的前一个位置结束,也就是[start , end)

效果案例:

/**
 * @author .29.
 * @create 2022-10-07 19:04
 */
public class StringBufferTest {
    public static void main(String[] args) {

        StringBuffer sb_3 = new StringBuffer("0123456789");

        System.out.println(sb_3.toString());

        sb_3.replace(1,9,"        ");

        System.out.println(sb_3.toString());

        sb_3.replace(1,9,"asdfghjkl");

        System.out.println(sb_3.toString());

    }

}

需要注意的是,此方法不是将指定位置内容完全由指定内容填充,而是直接将原本的内容替换成传入的指定内容,是可以造成下标位置变化的。

5.插入 StringBuffer insert(int offset, · · · )

使用insert(int offset , · · · )方法时,我们可以在指定下标位置的前面插入指定的内容,而内容对象的类型并不唯一,类似于上文将结果的append()方法中的参数。

效果案例:

/**
 * @author .29.
 * @create 2022-10-07 19:04
 */
public class StringBufferTest {
    public static void main(String[] args) {

        StringBuffer sb_3 = new StringBuffer("0123456789");

        sb_3.insert(0,"a");
        System.out.println(sb_3.toString());
        sb_3.insert(1,"b");
        System.out.println(sb_3.toString());
        sb_3.insert(2,"c");
        System.out.println(sb_3.toString());
        sb_3.insert(3,"d");
        System.out.println(sb_3.toString());
        sb_3.insert(4,"e");
        System.out.println(sb_3.toString());
        sb_3.insert(5,"f");
        System.out.println(sb_3.toString());
        sb_3.insert(6,"g");
        System.out.println(sb_3.toString());

    }

}

6.反转 StringBuffer reverse()

reverse()方法可以将当前字符串序列的先后顺序反转过来,是十分常用的方法:

效果案例:

/**
 * @author .29.
 * @create 2022-10-07 19:04
 */
public class StringBufferTest {
    public static void main(String[] args) {

        StringBuffer sb_3 = new StringBuffer("0123456789");

        System.out.println(sb_3.toString());

        sb_3.reverse();

        System.out.println(sb_3.toString());

    }

}

到此这篇关于Java字符串相关类StringBuffer的用法详解的文章就介绍到这了,更多相关Java StringBuffer内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java基础之StringBuffer详解

    一.前言 StringBuffer是可变长的字符串 1.append 追加 2.delete 删除 3.insert 插入 4.reverse 反转 二.用法 String str1 = "let there "; StringBuffer sb = new StringBuffer(str1); //根据str1创建一个StringBuffer对象 sb.append("be light"); //在最后追加 System.out.println(sb); sb.

  • Java十分钟精通String类的各种使用方法

    String String类: 代表字符串,提供了开发中常用的字符串处理的方法,如:求字符串的长度.截取字符串.替换字符串等方法,符串是常量,它的值创建之后就不可以再修改了. 首先我们先查一下官方文档,看看官方给String类定了什么方法: String也是属于java.lang包,所以不需要导入,这里就部分展示,全部的内容可以参考: https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.htm

  • Java 基础全面讲解StringBuffer类的使用

    目录 StringBuffer类 常用方法 字符串连接 指定位置添加内容 字符串反转 替换指定范围的内容 字符串截取 删除指定范围的字符串 查找指定的内容是否存在 String与StringBuffer的区别 Java 常用类 StringBuffer类 StringBuffer类的字符串可以被改变 常用方法 方法 类型 作用 public StringBuffer() 构造 StringBuffer的构造方法 public StringBuffer append(char c) 方法 追加 p

  • java之StringBuffer常见使用方法解析

    StringBuffer 当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类. 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象. StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问). 由于 StringBuilder 相较于 String

  • Java基础类库之StringBuffer类用法详解

    StringBuffer类 String类是在所有开发项目开发之中一定会使用的一个功能类,并且这个类拥有如下功能 每个字符串的常量都属于一个String类匿名对象,并且不能修改: String类有两个常量池:静态常量池.运行常量池: String类对象实例化建议直接使用赋值的形式完成,这样可以直接将对象保存在对象池中方便下次重用: 虽然String类很好用,但是我们发现它也有弊端,就是内容不允许频繁修改,所以为了解决问题,我们提供了StringBuffer类 StringBuffer 并不像St

  • Java字符串拼接新方法 StringJoiner用法详解

    Java中如何输出像1-2-3-4-5 这样的字符 抱歉对于这个问题我甚至不能想到一个合适的标题,但是不重要 以下操作基于 jdk 1.8 StringJoiner sj = new StringJoiner("-", "", ""); sj.add("1").add("1").add("2"); String desiredString = sj.toString(); 在1.8版本中

  • Java Objects工具类原理及用法详解

    Objects工具类 jdk 1.7引进的工具类,都是静态调用的方法,jdk 1.8新增了部分方法 重点方法 equals 用于字符串和包装对象的比较,先比较内存地址,再比较值 deepEquals 数组的比较,先比较内存地址,再比较值,如String.char.byte.int数组,或者包装类型Integer等数组 hashCode 返回对象的hashCode,若传入的为null,则返回0 hash 传入可变参数的所有值得hashCode的总和,底层用Arrays.hashCode 可变参数

  • Java中Properties类的操作实例详解

    Java中Properties类的操作实例详解 知识学而不用,就等于没用,到真正用到的时候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用Java来写,外加一些脚本语言Python,Perl之类的,不得已,又得重新拾起.本文通过看<Java编程思想>和一些网友的博客总结而来,只为简单介绍Properties类的相关操作.  一.Java Properties类 Java中有个比较重要的类Properti

  • Java Flink窗口触发器Trigger的用法详解

    目录 定义 Trigger 源码 TriggerResult 源码 Flink 预置的Trigger EventTimeTrigger源码 ProcessingTimeTrigger源码 常见窗口的Trigger 滚动窗口 滑动窗口 会话窗口 全局窗口 定义 Trigger确定窗口(由窗口分配器形成)何时准备好由窗口函数处理.每个WindowAssigner都带有一个默认值Trigger.如果默认触发器不符合您的需求,您可以使用trigger(…). Trigger 源码 public abst

  • 基于IntBuffer类的基本用法(详解)

    废话不多说,直接上代码 package com.ietree.basicskill.socket.basic.nio; import java.nio.IntBuffer; /** * Created by Administrator on 2017/5/25. */ public class BufferTest { public static void main(String[] args) { // 1 基本操作 /*//创建指定长度的缓冲区 IntBuffer buf = IntBuff

  • Java制作证书的工具keytool用法详解

    目录 一.keytool的概念 二.keytool的用法 三.创建证书 四.查看密钥库里面的证书 五.导出到证书文件 六.导入证书 七.查看证书信息 八.删除密钥库中的条目 九.修改证书条目的口令 一.keytool的概念 keytool 是个密钥和证书管理工具.它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务.在JDK 1.4以后的版本中都包含了这一工具,它的位置为%JAVA_HOME%\bin\keytool.

  • Java数据结构之优先级队列(PriorityQueue)用法详解

    目录 概念 PriorityQueue的使用 小试牛刀(最小k个数) 堆的介绍 优先级队列的模拟实现 Top-k问题 概念 优先级队列是一种先进先出(FIFO)的数据结构,与队列不同的是,操作的数据带有优先级,通俗的讲就是可以比较大小,在出队列的时候往往需要优先级最高或者最低的元素先出队列,这种数据结构就是优先级队列(PriorityQueue) PriorityQueue的使用 构造方法 这里只介绍三种常用的构造方法 构造方法 说明 PriorityQueue() 不带参数,默认容量为11 P

  • Java中Optional类及orElse方法详解

    目录 引言 Java 中的 Optional 类 ofNullable() 方法 orElse() 方法 案例 orElseGet() 方法 案例 orElse() 与 orElseGet() 之间的区别 引言 为了让我更快的熟悉代码,前段时间组长交代了一个小任务,大致就是让我整理一下某个模块中涉及的 sql,也是方便我有目的的看代码,也是以后方便他们查问题(因为这个模块,涉及的判断很多,所以之前如果 sql 出错了,查问题比较繁琐). 昨天算是基本完成了,然后今天组长就让给我看一个该模块的缺陷

  • Java JDK 1.8 lambda的用法详解

    具体代码如下所示: public class Student { private String id; private String name; private String age; private String address; public Student(String id, String name, String age, String address) { this.id = id; this.name = name; this.age = age; this.address = a

  • java JSON解析库Alibaba Fastjson用法详解

    本文实例讲述了java JSON解析库Alibaba Fastjson用法.分享给大家供大家参考,具体如下: Json是一种轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率. 现在主流的对象与 JSON 互转的工具很多,这里介绍的是阿里巴巴的开源库 - Fastjson.Fastjson是一个Java库,可用于将Java对象转换为其JSON表示.它还可用

随机推荐