String, StringBuffer和StringBuilder
2018-03-16 16:48
417 查看
他们都是java中与字符串有关的类
String
不可变的,每次改变都会重新生成一个对象,因为其中是一个final类型的字符数组。
StringBuffer和StringBuilder是可变的,因为他们其中的字符数组是可变的,
默认大小16个,当每次增加的时候,都去判断他的容量是否充足,如果不充足就重新new一个字符串数组,并把原来的内容通过Arrays的方法拷贝过去。
这让我想起大一学c语言的时候,老师让我们用数组写线性表,对容量进行处理的时候也是跟他的方法一样,现在已经大三了,唉。
StringBuffer和StringBuilder的区别就是
StringBuffer是线程安全的,StringBuilder是线程不安全的。
StringBuffer的一些方法 加上了 synchronized 关键字,在方法上加管自己就相当于synchronized(this)
当然,线程安全就意味着速度会慢一些。
String
不可变的,每次改变都会重新生成一个对象,因为其中是一个final类型的字符数组。
private final char value[];
StringBuffer和StringBuilder是可变的,因为他们其中的字符数组是可变的,
默认大小16个,当每次增加的时候,都去判断他的容量是否充足,如果不充足就重新new一个字符串数组,并把原来的内容通过Arrays的方法拷贝过去。
//扩大容量,进行拷贝 void expandCapacity(int minimumCapacity) { int newCapacity = value.length * 2 + 2; if (newCapacity - minimumCapacity < 0) newCapacity = minimumCapacity; if (newCapacity < 0) { if (minimumCapacity < 0) // overflow throw new OutOfMemoryError(); newCapacity = Integer.MAX_VALUE; } value = Arrays.copyOf(value, newCapacity); }
char[] value; public StringBuffer() { super(16); }
这让我想起大一学c语言的时候,老师让我们用数组写线性表,对容量进行处理的时候也是跟他的方法一样,现在已经大三了,唉。
StringBuffer和StringBuilder的区别就是
StringBuffer是线程安全的,StringBuilder是线程不安全的。
//StringBuffer的append方法 public synchronized StringBuffer append(StringBuffer sb) { super.append(sb); return this; }
StringBuffer的一些方法 加上了 synchronized 关键字,在方法上加管自己就相当于synchronized(this)
当然,线程安全就意味着速度会慢一些。
相关文章推荐
- String、StringBuffer与StringBuilder之间区别
- 探秘Java中的String、StringBuilder以及StringBuffer
- String,StringBuffer与StringBuilder的区别??
- Java基础之String、StringBuffer、StringBuilder的区别
- String,StringBuffer,StringBuilder拼接操作的效率对比
- Java 中的字符串类String、StringBuffer、StringBuilder的区别
- String 与StringBuffer、StringBuilder的区别
- 【Java】String,StringBuffer与StringBuilder的区别??
- String和StringBuffer和StringBuilder之间区别
- String、StringBuffer、StringBuilder
- Java中String、StringBuilder以及StringBuffer
- String, StringBuffer, StringBuilder
- 全面解释StringBuilder、StringBuffer和String的关系
- java基础String,StringBuffer,StringBuilder的区别
- 朝花夕拾:Java中String,StringBuffer,StringBuilder使用方法以及异同比较
- String, StringBuffer, StringBuilder三者的使用和区别
- Java: String, StringBuilder和StringBuffer 三者之间的区别
- String,StringBuffer与StringBuilder的区别
- String、StringBuffer与StringBuilder之间区别
- NO10.Java笔记【String、StringBuilder、StringBuffer】