zoukankan      html  css  js  c++  java
  • 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() ;
    
    
    }
  • 相关阅读:
    ffmpeg处理视频与声音
    吸引力
    bzoj 2752: [HAOI2012]高速公路(road)
    bzoj 3653 [湖南集训]谈笑风生
    bzoj 3143: [Hnoi2013]游走
    16,docker入门
    15.9,python操作redis集群
    15.8,redis-cluster配置
    15.7,哨兵集群
    15.6,redis主从同步
  • 原文地址:https://www.cnblogs.com/ZXF6/p/11508718.html
Copyright © 2011-2022 走看看