String、StringBuffer、StringBuilder的区别
来源:互联网 发布:联通什么套餐知乎 编辑:程序博客网 时间:2024/06/03 11:58
今天再给大家分享一下关于String、StringBuffer、StringBuilder的区别
1.String、StringBuffer、StringBuilder的效率
(String<<StringBuffer<StringBuilder)
String 常量,我们可以看到String类,在java.lang包下是这么定义的,也就说String是个常量
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {}String s=new String("init");
s="newInit";
再次给字符串变量s赋值的时候,等于在栈内给变量s又分配了一个内存地址
而StringBuilder和StringBuffer是变量,如果上述换成StringBuilder或StringBuffer就不会重新给变量s分配内存地址,所以在实际开发过程中,一个字符串变量如果需要频繁改变,最好就不要用String类了。
再来看下StringBuffer,这里是从StringBuffer里随意取了一个方法,我们可以看到StringBuffer里的方法都加了synchronized,说明StringBuffer是同步的,是线程安全的
/** * @throws IndexOutOfBoundsException {@inheritDoc} * @see #length() */public synchronized char charAt(int index) { if ((index < 0) || (index >= count)) throw new StringIndexOutOfBoundsException(index); return value[index];}
而StringBuilder中的方法,并没有加synchronized,也就是说是异步的,非线程安全的
/** * @throws StringIndexOutOfBoundsException {@inheritDoc} */public StringBuilder insert(int index, char[] str, int offset, int len){ super.insert(index, str, offset, len); return this;}
所以从效率的角度考虑要优选StringBuilder,从线程安全的角度考虑要优选StringBuffer
阅读全文
0 0
- String,StringBuffer,StringBuilder的区别
- String StringBuffer StringBuilder的区别
- String, StringBuffer, StringBuilder的区别?
- String,StringBuffer, StringBuilder 的区别
- String,StringBuffer,StringBuilder的区别
- String , StringBuffer, StringBuilder的区别
- String 、 StringBuffer 、StringBuilder 的区别
- String StringBuffer StringBuilder的区别
- String、StringBuffer、StringBuilder的区别
- String, StringBuffer, StringBuilder的区别
- String StringBuffer StringBuilder的区别
- string、stringbuffer、stringbuilder的区别
- String、StringBuffer 、StringBuilder 的区别
- String,StringBuffer,StringBuilder的区别
- String ,StringBuffer,StringBuilder的区别
- String,StringBuffer,StringBuilder的区别
- String StringBuffer StringBuilder的区别
- String,StringBuffer,StringBuilder的区别?
- tensorflow:自定义op简单介绍
- STM8->RCC
- 解决bootstrap多模态框跳转时页面左移问题
- 经典遮罩滚动条问题
- 用空格缩进的程序员赚钱更多吗?
- String、StringBuffer、StringBuilder的区别
- QT4第一次复习——思维导图
- Disruptor之从Ringbuffer读取
- Java--transient
- Dev 控件绑定的数据源批量操作应避免自动刷新
- C#泛型约束
- 使用Mycat操作Oracle数据库(七) -- JAVA代码JDBC连接Mycat
- 《挑战程序设计竞赛》阅读笔记四
- [Leetcode] 229. Majority Element II 解题报告