有个Person类含有一个属性name和一个构造器
class Person {
String name;
public Person(String name) {
this.name = name;
}
}
观察以下代码并分析具体的输出值(我已给出答案)
public static void main(String[] args) {
String s1 = "hello!";
Person p1 = new Person(s1);
Person p2 = new Person(s1);
System.out.println(p1 == p2);//false
System.out.println(p1.equals(p2));//false
System.out.println(p1.name == p2.name);//trus
String s4 = new String("hello!");
String s5 = "hello!";
System.out.println(s1 == s4);//false
System.out.println(s4 == s5);//false
String m1 = "CSDN" + s1;
String m2 = "CSDNhello!";
System.out.println(m1.intern() == m2);//true
}
内存分析图,一目了然
这里只需注意一点intern是获得在常量池中的地址,也就是这个数据存在的地址