前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >StringBuffer和StringBuilder类

StringBuffer和StringBuilder类

作者头像
用户7886150
修改2020-12-11 14:25:09
5460
修改2020-12-11 14:25:09
举报
文章被收录于专栏:bit哲学院

参考链接: Java中的String vs StringBuilder vs StringBuffer

下述文章资料来源于: W3CSCHOOL离线版的Java教程 Java JDK 6.0开发手册 Java开发从入门到精通(陈小玉版) 

StringBuffer和String选择的异同 StringBuffer在进行字符串处理时,不生成新的对象,在内存的使用上要优于String类; 二者有一个最显著的区别在于,对于StringBuffer对象的每次修改都会改变对象自身,这点是和String类最大的区别 

Java StringBuffer和StringBuilder类 当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类。 

和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。 

StringBuilder类在Java 5中被提出,它和StringBuffer之间的最大不同在于StringBuilder的方法不是线程安全的(线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据)。 

由于StringBuilder相较于StringBuffer有速度优势,所以多数情况下建议使用StringBuilder类。然而在应用程序要求线程安全的情况下,则必须使用StringBuffer类。 

在Java中规定,一旦声明String的内容就不可再改变,如果要改变,改变的肯定是String的引用地址。 如果一个字符串需要经常被改变,则必须使用 StringBuffer类。 在String类中可以通过“+”来连接字符串,在StringBuffer中只能使用方法append()来连接字符串。 

public class Test{

    public static void main(String args[]){

       StringBuffer sBuffer = new StringBuffer(" test");

       sBuffer.append(" String Buffer");

       System.out.println(sBuffer);  

   }

}

以上实例编译运行结果如下: 

test String Buffer

StringBuffer 方法 以下是StringBuffer类支持的主要方法: 

序号方法描述1public StringBuffer append(String s) 将指定的字符串追加到此字符序列。2public StringBuffer reverse() 将此字符序列用其反转形式取代。3public delete(int start, int end)4public insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中。5replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。

下面的列表里的方法和String类的方法类似:  使用append()来连接字符串 

public class StringBufferT1{

    public static void main(String args[]){

        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 

        buf.append("Hello ") ;                    // 向StringBuffer中添加内容

        buf.append("World").append("!!!") ;        // 可以连续调用append()方法

        buf.append("\n") ;                        // 添加一个转义字符

        buf.append("数字 = ").append(1).append("\n") ;    // 添加数字

        buf.append("字符 = ").append('C').append("\n");     // 添加字符

        buf.append("布尔 = ").append(true) ;    // 添加布尔值

        System.out.println(buf) ;            // 直接输出对象,调用toString()

    }

};

在任意处为StringBuffer添加内容 

public class StringBufferT3{

    public static void main(String args[]){

        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 

        buf.append("World!!") ;        // 添加内容

        buf.insert(0,"Hello ") ;        // 在第一个内容之前添加内容

        System.out.println(buf) ;

        buf.insert(buf.length(),"MM~") ;    // 在最后添加内容

        System.out.println(buf) ;

    }

};

在任意处为StringBuffer添加内容 

public class StringBufferT5{

    public static void main(String args[]){

        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 

        buf.append("Hello ").append("World!!") ;        // 向StringBuffer添加内容

        buf.replace(6,11,"AAA") ;        // 将world的内容替换

        System.out.println("内容替换之后的结果:" + buf) ;    // 输出内容

    }

};

从StringBuffer中删除指定范围的字符串 

public class StringBufferT7{

    public static void main(String args[]){

        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 

        buf.append("Hello ").append("World!!") ;        // 向StringBuffer添加内容

        buf.replace(6,11,"AAA") ;        // 将world的内容替换

        String str = buf.delete(6,15).toString() ;    // 删除指定范围中的内容

        System.out.println("删除之后的结果:" + str) ;    // 输出内容

    }

};

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档