Java ------ StringBuffer 类和 String Builder 类

ぃ、小莉子 提交于 2020-04-07 01:44:25

一、使用StringBuffer 类处理字符串

StringBuffer 也可以用来存储字符串,比String 类更高效的存储字符串的一种引用数据类型,特别是对字符串进行连接操作时,使用StringBuffer 类可以大大提高程序的执行效率。

 

1、使用StringBuffer 类

StringBuffer 类位于java.util包中,是String 类的增强类。

声明StringBuffer 类并初始化

 StringBuffer stringBuffer = new StringBuffer("obge");

2、StringBuffer 类常用方法

String toString() : 转换为String 类型的对象并返回

StringBuffer append(参数);   追加字符串,将参数连接到字符串后并返回。

append() 方法与concat() 方法一样都是把一个字符串追加到另一个字符串后。

         不同的是String类中只能将String类型的字符串追加到另一个后面,StringBuffer类中可以将任何类型的值追加到字符串后。

 

 

 StringBuffer insert()  :  插入字符串

字符串 . insert(位置,参数);
//将参数插入到指定位置后并返回stringBuffer 类型,参数值可以是包括任何类型的值

 

 

在StringBuffer类中的定义

 

 

 

 例子:

package com.obge.test1;

public class StringStu2 {
    public static void main(String[] args) {

        StringBuffer stringBuffer = new StringBuffer("obge哥哥");
        int num = 2223;
        //使用 append 追加
        StringBuffer stringBufferAppend = stringBuffer.append(num);
        System.out.println("现在的字符串为:"+stringBufferAppend);
        //每隔2 位 添加 *
        for(int i= stringBufferAppend.length()-2;i>0;i=i-2){
            stringBufferAppend.insert(i,"*");
        }
        System.out.println("添加*后的字符串为:"+stringBufferAppend);
    }
}

控制台输出内容:

 

 

 

二、使用StringBuilder 类处理字符串 

StringBuilder 位于Java.lang 包中,是JDK 5.0 新增的类,是一个可变的字符序列。此类提供了一个与StringBuffer 兼容的API ,被设计用作StringBuffer的一个简易替换,在大多数实现中,比StringBuffer 执行要快。

StringBuilder  类处理字符串方法与StringBuffer类基本一致

 

 

注意哦  没有 synchronized,不提供同步,单线程的

 

 

 

 

三、String类、StringBuffer类以及StringBuilder类对比

String 类:是不可变的对象,在每次对String 类型进行改变时等同于生成了一个新的String 对象,然后指向新的String对象,所以经常改变内容的字符串最好不要用String类型,因为每次生成对象都会对系统性能产生影响。

 

StringBuffer类:时可变的字符串,在每次对StringBuffer对象进行改变时,会对StringBuffer 对象本身进行操作,而不是生成新的对象,在改变对象引用。所以在字符串经常改变的情况下推荐使用StringBuffer l类。

在字符串连接操作中,StringBuffer 类的执行效率比String类高

通过 + 号来进行追加子符串操作时,实际是通过建立一个StringBuffer 对象,让他调用append() 方法,最后在转化为String ,比StringBuffer 多了一些附加操作所以效率低,而且String对象的不可变性也比较影响性能。

 

StringBuilder 类:是单线程的不提供同步,理论上比StringBuffer效率更高。但是StringBuffer是线程安全的。

          

这和引用类型与基本类型的存储有点相似

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!