java.lang包下的StringBuffer类,代表着可变的字符序列,可以用来对字符串内容进行增删改操作。本文将通过示例详细说说它的用法,感兴趣的可以跟随小编一起学习一下
一、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内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:Java字符串相关类StringBuffer的用法详解
基础教程推荐
- springboot自定义starter方法及注解实例 2023-03-31
- Java实现查找文件和替换文件内容 2023-04-06
- Java并发编程进阶之线程控制篇 2023-03-07
- java基础知识之FileInputStream流的使用 2023-08-11
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- java实现多人聊天系统 2023-05-19
- Java文件管理操作的知识点整理 2023-05-19
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- Java数据结构之对象比较详解 2023-03-07
- Java实现线程插队的示例代码 2022-09-03