public class StringDemo2 {
public static void main(String[] args) {
String s1 = "hello";
String s2 = new String("hello");
String s3 = "hello";
System.out.println("s1:" + s1.getClass().getName() + "@" + s1.hashCode());
System.out.println("s2:" + s2.getClass().getName() + "@" + s2.hashCode());
System.out.println("s3:" + s3.getClass().getName() + "@" + s3.hashCode());
System.out.println("s1==s2:" + (s1 == s2));
System.out.println("s1.equals(s2):" + s1.equals(s2));
System.out.println("s1==s3:" + (s1 == s3));
System.out.println("s1.equals(s3):" + s1.equals(s3));
}
}
s1==s2结果是false,说明它们的地址值是不同的。但是为什么s1.getClass().getName() + "@" + s1.hashCode()ode(2/s1.getClass().getName() + "@" 2 s1.hashCode()却是一样的???