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.由于继承了同一个类,所有从父类继承的方法相同