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.文章来源地址https://www.toymoban.com/news/detail-697228.html

到了这里,关于Java String类(3):StringBulider和StringBuffer详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java字符串知多少:String、StringBuffer、StringBuilder

    String 是 Java 中使用得最频繁的一个类了,不管是作为开发者的业务使用,还是一些系统级别的字符使用, String 都发挥着重要的作用。 String 是 不可变 的、 final 的,不能被继承,且 Java 在运行时也保存了一个字符串池(String pool) ,就使得 String 变得很特殊。 实现三个接口:

    2024年02月06日
    浏览(53)
  • 【JAVA】String ,StringBuffer 和 StringBuilder 三者有何联系?

    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 在之前的文章中我们介绍了JAVA中String的运用方法,事实上在JAVA字符串操作中仅仅只知道String方法是远远不够的,今天我们要介绍的 StringBuffer 和 StringBuilder 在字符串操作中同样占据总要地位。 和 String 类不同的是,S

    2024年02月14日
    浏览(54)
  • 【后端面经-Java】String与StringBuffer与StringBuilder的比较

    目录 1. String 2. StringBuffer 3. StringBuilder 4. 性能提升 5. 总结和比较 面试模拟 参考资料 不可变 查看 String 源码如下:由源码可知,String中存储数据的数组被 final 修饰,因此是不可变的 运算和操作 创建对象 创建对象有两种方式:两种方式都会在栈中创建一个字符串变量

    2024年02月16日
    浏览(45)
  • java中的String使用注意事项、StringBuilder、StringBuffer、StringJoiner

    String使用注意事项 这里第二次创造了0个对象是因为字符串常量池中已经有\\\"abc\\\" StringBuilder 注意StringBuilder支持链式编程 StringBuilder 线程安全与不安全的区别在于,当系统里存在很多人同时操作同一个StringBuilder就可能出bug,而StringBuilder不会。 StringJoiner

    2024年02月12日
    浏览(36)
  • Java-String、StringBuffer、StringBuilder区别及相关面试题

    在Java编程中,经常会遇到处理字符串的需求。Java提供了多个类来处理字符串,其中最常用的是String、StringBuffer和StringBuilder类。本文将介绍这三个类的基本用法和区别。 String是Java中最常用的字符串类,它是不可变的,也就是说一旦被创建,它的值就不能被改变。下面是Stri

    2024年02月11日
    浏览(41)
  • Java基础09 —— 字符序列--String、StringBuilder、StringBuffer区别及其方法介绍

    字符与字符串 字符类型(char)是Java中的基本数据类型,占2个字节16位,默认值是 ‘u0000’ 。字符是用单引号引住的单个符号. 字符串(String)是用双引号引住的任意个字符,是引用数据类型,默认值是null 。字符串其实就是字符组成的序列 字符串声明 举例: 字符序列 多个字符

    2024年02月09日
    浏览(38)
  • 36、Java 中的 String、StringBuilder、StringBuffer、字符串常量池和 intern 方法

    ✏️ Java 中用 java.lang.String 类代表字符串 ✏️ 底层用 char[] 存储字符数据。从 Java9 开始,底层使用 byte[] 存储字符数据 🌿 字符串的底层是 char[] ,但是 char 数组和字符串不能等价。 char 数组是 char 数组,字符串是字符串。 🌿 C 语言中是可以把 char 数组 和字符串等价的 ✏️

    2023年04月08日
    浏览(67)
  • String、StringBuffer和StringBuilder的详解

    目录 一、String讲解 1.String(String字符串常量) 2.String 拼接方式与性能的影响 二、StringBuffer 和 StringBuilder 讲解 1.StringBuffer 和 StringBuilder 使用场景:(StringBuffer、StringBuilder字符串变量) 2.StringBuffer的使用 3.StringBuffer与StringBuilder的线程安全性问题  4.synchronized的含义:(线程同步机制

    2024年02月12日
    浏览(44)
  • 【Java 基础篇】Java StringBuffer详解:更高效的字符串处理

    在Java编程中,字符串是一个常见的数据类型,用于存储文本信息。然而,与字符串相关的操作可能会导致性能问题,因为字符串是不可变的,每次对字符串进行操作都会创建一个新的字符串对象。为了解决这个问题,Java提供了 StringBuffer 类,它允许我们有效地处理可变字符串

    2024年02月10日
    浏览(41)
  • 编程开发8大语言详解,为什么Java是我最推荐的?

    很多没有接触过编程语言的同学,都会觉得编程开发特别高端和神奇,担心理解不了更担心学不会。 当然,也有人会认为,你既然是做编程的,那么你应该什么都会,什么软件的开发都能完成,这是平哥经常听到的两种声音。 在此,平哥需要给大家科普一下, 编程确实改变

    2024年02月05日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包