zoukankan      html  css  js  c++  java
  • String、StringBuffer、StringBuilder的区别——Java面向对象基础(24)

    一、String、StringBuffer、StringBuilder的一些概念

    1.Sting的值一般存放在中或者常量池

            String str0=new String("ABC");//开辟新空间,存放在堆中
            String str1="ABC";//存放在常量池中

    当添加字符时,需要开辟新空间。效率低下。

     

     注意常量池中的另当别论。和在堆中的以及StringBuffer和StringBuilder都不同。

    2.StringBuffer和StringBuilder拥有缓冲区,添加或更改字符时不再需要开辟新空间其缓冲区为动态增长。效率较高

            StringBuilder sb1=new StringBuilder("AB");
            sb1.append("C");
            StringBuffer sb2=new StringBuffer("AB");
            sb2.append("C");

     

    二、区别

    1.String的一个特殊情况,编译器的优化导致指向常量池

     

     2.如果字符串要进行值的比较最好使用equals方法

     3.StringBuffer的创建

            StringBuffer sb0=new StringBuffer("AB");
            sb0.append("C");

     4.StringBuilder的创建

            StringBuilder sb=new StringBuilder("AB");
            sb.append("C");

     5..StringBuffer与StringBuilder的append方法部分源码分析

    //StringBuffer的append方法源码                    
                @Override
                public synchronized StringBuffer append(String str) {//synchronized(同步锁)修饰方法就是线程安全的
                    toStringCache = null;
                    super.append(str);
                    return this;
                }
    //StringBuilder的append方法源码
                @Override
                public StringBuilder append(String str) {
                    super.append(str);
                    return this;
                }

     (1)synchronized(同步锁)修饰方法就是线程安全的。

     (2)StringBuffer是线程安全的,StringBuilder线程不安全的。

     (3)StringBuilder效率比StringBuffer更高,因为它是线程不安全。注意在实际的开发过程中使用StringBuilder的频率也会比StringBuffer高。

     6.三者选择情况使用

    当出现频繁的对字符串进行修改、添加、删除时。StringBufferStringBuilder

    总结效率高低:StringBuilder > StringBuffer > String

     

  • 相关阅读:
    收集一些dos网络配置命令,从新获取ip刷新dns
    多个线程访问共享对象和数据的方式
    Oracle rownum 分页, 排序
    ORACLE中用rownum分页并排序的SQL语句
    CentOS 6.5安装MongoDB 2.6(多yum数据源)
    【编程练习】收集的一些c++代码片,算法排序,读文件,写日志,快速求积分等等
    java枚举使用详解
    PHP+MySQL动态网站开发从入门到精通(视频教学版)
    Premiere Pro CS6标准教程
    黑客攻防:实战加密与解密
  • 原文地址:https://www.cnblogs.com/Unlimited-Rain/p/12535398.html
Copyright © 2011-2022 走看看