字符串的分类:
String和StringBuilder以及StringBuffer的关系图:
1、不可变字符串
- 定义: String:说的是字符串本身没有发生变化,与引用无关- - -常量。
- 表示方法:String s1 = “1000phone”;
- 实例代码:
public class Demo2 {
public static void main(String[] args) {
String s1 = "1000phone";
//String s1 = "1000phone"; 定义两个变量s1无法运行
String s2 = "1000phone";
String s3 = new String("1000phone");
String s4 = new String("1000phone");
System.out.println(s1 == s2);//true
System.out.println(s1 == s3);//false
System.out.println(s1 == s4);//false
System.out.println(s3 == s4);//false
//说明字符串重写了equals方法,重新指定了比较的规则.规则变成:让s1与s3属性的地址比较
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//true
//总结:以后比较字符串时尽量使用equals
}
解释:
- 当执行s1的时候,会到常量区找叫1000phone的字符串,如果有直接让s1保存他的地址,如果没有,会在常量区开辟一块儿空间存储1000phone。
- 执行s2是同理s1。
- 执行s3时,由于进行了new,一定会现在堆中开辟一块儿空间,而1000phone是作为参数传给了对象.保存在了对象的一个String类型的成员变量内,所以直接判断s1与s3不相同。
- 执行s4同理s3。
其中的相关方法使用:<