String s= "hello";
String s2 = "hello";
System.out.println(s == s2);//true
System.out.println(s.equals(s2));//false
String s3 = new String("hello");
String s4 = new String("hello");
System.out.println(s3 == s4);//false
System.out.println(s3.equals(s4));//true
一般情况下,==比较的是引用地址值,而equals比较的是复写后的成员内容,s和s2都是直接赋值,就是在常量池中找"hello",s和s2的引用都是常量池中"hello"的地址值,所以s ==s2,其他几种情况就很好理解了。 |