Java String类(3):StringBulider和StringBuffer详解

简介: Java String类(3):StringBulider和StringBuffer详解

StringBuilder的介绍

由于String的不可更改的特性,为了方便字符串的修改,Java中又提供了StringBuilder和StringBuffer类。这两个类大部分功能是相同的,我来介绍一下StringBulider常用的一些方法。如果想要查询其它的方法,可以查询API。

方法 说明
StringBuffer append(String str)

在尾部追加,相当于String的+=,可以追加:boolean, char, char[],

double, float, int, long, Object, String, StringBuff的变量

char charAt(int index) 获取index位置的字符
int length() 获取字符串的长度
int capacity() 获取底层保存字符串空间总的大小

void ensureCapacity(int mininmumCapacity)参数:

该方法将所需最小容量作为参数

扩容
void setCharAt(int index, char ch) 将index位置的字符设置为ch
int indexOf(String str) 返回str第一次出现的位置
int indexOf(String str, int fromIndex) 从fromIndex位置开始查找str第一次出现的位置
int lastIndexOf(String str) 返回最后一次出现str的位置
int lastIndexOf(String str, int fromIndex) 从fromIndex位置开始寻找str最后出现的位置
StringBuffer insert(int offset, String str) 在offset的位置插入:八种基类类型&String类型&Object类型数据
StringBuffer deleteCharAt(int index) 删除index位置的字符
StringBuffer delete(int start, int end) 删除[start, end)之间的字符
StringBuffer replace(int start, int end, String str) 将[start, end)之间的字符置换为str
String substring(int start) 从start开始一直到末尾的字符以String的方式返回
String substring(int start, int end) 将[start, end)范围内的字符以String的方式返回
StringBuffer reverse() 反转字符串
String toString() 将所有的字符按照String的方式返回

下面举一个长点的例子来介绍一下部分方法:

 public static void main(String[] args) {
        StringBuilder sb1 = new StringBuilder("hello");
        StringBuilder sb2 = sb1;
 
        //追加:即尾插->字符,字符串,整型数字
        sb1.append(' '); //hello
        sb1.append("world"); //hello world
        sb1.append(123); //hello world123
        System.out.println(sb1);
        System.out.println(sb1 == sb2);//true
 
        System.out.println(sb1.charAt(0));//获得0字号位上的字符h
 
        System.out.println(sb1.length());//获取字符串的有效长度:14
 
        System.out.println(sb1.capacity());//获得底层数组的总大小
 
        sb1.setCharAt(0, 'H');//设置任意位置上的字符Hello world123
 
        sb1.insert(0, "Hello world!!!");//Hello world!!!Hello world123
        System.out.println(sb1);
 
        System.out.println(sb1.indexOf("Hello"));//获得Hello第一次出现的位置:0
        System.out.println(sb1.lastIndexOf("Hello"));//获得Hello最后一次出现的位置:14
 
        sb1.deleteCharAt(0);//删除首字符
        sb1.delete(0, 5);//删除[0,5)之间的字符
 
        String str = sb1.substring(0, 5);//截取[0,5)区间中的字符并以String类型返回
        System.out.println(str);
 
        sb1.reverse();//字符串逆转
        str = sb1.toString();//将StringBuffer的方式返回
        System.out.println(str);
    }

从上述例子可以看出:String和StringBuilder最大的区别在于String的内容无法修改,而StringBuilder内容可以修改。频繁使用字符串的情况下考虑使用StringBuilder.

注:String和StringBuilder类不能直接转换。如果想要互相转换,可以采用以下原则:

1.String变为StringBuilder:利用StringBuilder的构造方法或者append()方法

2.StringBuilder变为String:调用toString()方法

常见问题

1.String,StringBuffer,StringBuilder之间的区别:

(1)String的内容不可修改,StringBuffer和StringBuilder的内容可以修改

(2)StringBuffer和StringBuilder的大部分功能是相似的

(3)StringBuffer采用同步处理,属于线程安全操作(StringBuffer前面有synchronized关键字以保证线程安全);而StringBuilder未采用同步处理,属于线程不安全操作

(4)StringBuffer性能较差,StringBuilder性能较好

2.

相关文章
|
1天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
27 17
|
2天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
6天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
6天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
6天前
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
15 3
|
9天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
17 5
|
9天前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
22 2
|
2月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
36 0
java基础(13)String类
|
18天前
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
37 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
14天前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
16 2

热门文章

最新文章