class StringEqualTest {
public static void main(String[] args) {
String s1 = “Programming”;
String s2 = new String(“Programming”);
String s3 = “Program”;
String s4 = “ming”;
String s5 = “Program” + “ming”;
String s6 = s3 + s4;
System.out.println(s1 == s2);//f
System.out.println(s1 == s5); //t 字符串常量相加的值存在则将常量池中相等的值的地址传递过去
System.out.println("s1 == s6: "+(s1 == s6));//f
System.out.println("s1.equals(s6): "+s1.equals(s6));//t
//查看对象地址
System.out.println("System.identityHashCode(s1): "+System.identityHashCode(s1));
System.out.println("System.identityHashCode(s6): "+System.identityHashCode(s6));
//System.identityHashCode(s1): 189568618
//System.identityHashCode(s6): 793589513
System.out.println(s1 == s6.intern());//t
System.out.println(s2 == s2.intern());//f
System.out.println("s1: "+s1.hashCode());
System.out.println(“s6:”+s6.hashCode());
// s1: -1615787847
// s6:-1615787847
}
}