@Test
public void test2(){
//通过字面量定义的方式:此时s1 s2的数据javaEE声明在方法区中的字符串常量池中
String s1="javaEE";
String s2="javaEE";
//通过new+构造器的方式:此时的s3 s4保存的地址值,是数据在堆空间中开辟空间以后对应的地址值
String s3 = new String("javaEE");
String s4 = new String("javaEE");
System.out.println(s1==s2);//true 地址值相同
System.out.println(s1==s3);//false s1 s3一个在常量池一个在堆空间,地址值不同
System.out.println(s1==s4);//false
System.out.println(s3==s4);//false 堆空间 两个不同的对象
System.out.println("*******************");
Person p1 = new Person("Tom", 12);
Person p2 = new Person("Tom", 12);
System.out.println(p1.name.equals(p2.name));//equals内容相同 true
System.out.println(p1.name==p2.name);//都在常量池中,所以地址值相同
p1.name="Jerry";
System.out.println(p2.name);//Tom 常量池 不可变性
}



