String类的常见构造方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/c12e9211fa1f49a5b759ca05339b390c.png)
- String类创建对象地址解析
![在这里插入图片描述](https://img-blog.csdnimg.cn/ec29572c61254abfa1845170d02d8f67.png)
创建字符串对象时,会先到串池里找有没有已有的,有就直接给对象地址,没有则新创建一个字符串。
![在这里插入图片描述](https://img-blog.csdnimg.cn/ecd1b9a3e2e24d9b9898b0049234193a.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/121879e9ad1346908405399fff450f87.png)
通过双引号直接创建的字符串会统一存放在串池里,而通过new创建出来的对象会在堆内存中开辟一块内存空间。
![在这里插入图片描述](https://img-blog.csdnimg.cn/fae63b0184f64f54bec79366988f0caf.png)
s3是由常量加上变量,会额外产生一个StringBuilder类型的数据,再转换成String类型,二者都不在串池里。![在这里插入图片描述](https://img-blog.csdnimg.cn/f5f171ef19744f54b2b724c6c938ee3d.png)
java有常量优化机制,常量与常量相加时,在编译的字节码文件中直接相加合并,所有s1==s2为true。
String方法小结
![在这里插入图片描述](https://img-blog.csdnimg.cn/d276da42c5d04fc693f2ca5906ee3521.png)