String s1 = "hello";
String s2 = "hello";
// true,比较地址值:内容相同,因为常量池中只有一个“hello”,所以它们的地址值相同
System.out.println(s1 == s2);
// true,比较内容:内容相同,因为常量池中只有一个“hello”,所以它们的地址值相同
System.out.println(s1.equals(s2));
// true
System.out.println(s1.equals("hello"));
String s3 = new String("hello");
String s4 = new String("hello");
// false,比较地址值:s3和s4不在同一个内存中
System.out.println(s3 == s4);
// true 比较值
System.out.println(s3.equals(s4));
总结:
== 比较的是地址与值
equals 比较的是 值