Java学习
String字符串
概述
java.lang.String类代表字符串。
API当中说:Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现。
其实就是说:程序当中所有的双引号字符串,都是String类的对象。(就算没有new,也照样是。)
String类的特点
对String在内存存储方面的理解:
1.字符串一旦创建内容永不可变,每当你觉得字符串变了的时候,必然就是创建了新的字符串 。【重点】
2.正因为字符串不可改变,所以字符串是可以共享使用的。
3.字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组。
4.双引号括起来的字符串存储在字符串常量池中。
5.字符串的比较必须使用equals方法。
6.String已经重写了toString()和equals()方法。
String字符串常量池
在JDK当中双引号括起来的字符串,例如:“abc”,“def”,都是直接存储在“方法区”的“字符串常量池”当中的。
为什么SUM公司把字符串存储在一个“字符串常量池”当中呢?因为字符串在实际开发中使用太频繁,为了执行效率,所以把字符串放到了方法区的字符串常量池当中。