Java中的String,StringBuilder,StringBuffer三者的区别?

Posted 一只初学小菜鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的String,StringBuilder,StringBuffer三者的区别?相关的知识,希望对你有一定的参考价值。

package com.aaa.zxf.ajax.test;

/**
 * 弄清楚  string   stringBuilder   StringBuffer 三者之间的关系?
 *
 *
 * 一、 三者都是用来对字符串进行操作,
 *         String通常用来定义一个变量,
 *         而StringBuilder StringBuffer则通常用来对字符串进行拼接等操作
 *
 * 二、线程安全
 *      在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的
 *
 * 三、 总结一下
 *   String:适用于少量的字符串操作的情况
 *
 *   StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
 *
 *   StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
 *
 */
public class TestString {
    /**
     *  查看源码  被final 修饰的。
     *  private final char value[];
     *
     *  所以 string 修饰的是定长,不可变的。
     *
     */
    String h0="123";

    String h1=new String("12");

    String h2=h0 + h1;

    /**
     * 得到 "12312"
     *
     * 底层不可变  就会创建三个对象  占用内存
     * 一直都未失去引用 无法回收垃圾
     * 浪费资源
     */

    /**
     * StringBuilder 和 StringBuffer 都是继承了AbstractStringBuilder
     *
     * char 没有被final 修饰 内容是可变的。
     *
     */
    StringBuilder hah=new StringBuilder();


    /**
     * 查看源码得知。。
     * StringBuffer在拼接字符串时,使用了同步锁,安全性提高,而StringBuilder未使用同步锁,故效率提高。
     */
    StringBuffer h = new StringBuffer() ;


}

 

以上是关于Java中的String,StringBuilder,StringBuffer三者的区别?的主要内容,如果未能解决你的问题,请参考以下文章

java从基础知识字符串处理

C# String与StringBuilder

Java难点 | StringBuilder类/StringBuffer类

字符串拼接的五种方式

请问java输入流中当文件大于byte数组长度的时候,该如何循环读取?

List转换为字符串并添加分隔符