Java中的StringBuffer和StringBuilder的区别

Java中的String
String的开辟方式:内存中主要以存储堆栈的形式来存储数据。
**堆:**在堆中存放的是对象和引用类型的数据.
栈:在栈中存放的是值类型的数据.
除此之外,在String的存储地方还有
常量池
在常量池中存放的是声明并赋值但并为实例化的String类型
String中有一个方法intern()可以将存放在堆中的值转化为存放在常量池中的值.

StringBuffer和StringBuilder的区别

1.线程安全上
StringBuffer:用于解决大量拼接时产生很多中间对象问题而提供的一个类,是线程安全的.但StringBuilder不是线程安全的.
2.使用的情况
1.在字符串不经常发生的变化的业务场景优先使用String
2.在单线程下,比如有大量的字符创操作的情况下,应该使用StringBuilder
2.在多线程下,有大量的字符串大的操作的情况下,应该使用StringBuffer
3.运算速度
StringBuilder>StringBuffer>String
4.声明后的状态
String是final类不能被继承且为字符串常量,
而StringBuffer和StringBuilder均为字符串变量,
String对象一旦被创建便不更改,而StringBuilder和StringBuffer是可变的。

StringBuffer和StringBuilder的相同点

1.StringBuffer和StringBuilder都继承了AbstractStringBuilder
2.都需要实例化创建对象
3.由于继承了同一个类,所有从父类继承的方法相同

你可能感兴趣的:(Java中的String)