关于equals()方法有疑问?
老师说equals()方法是比较对象的引用是都指向同一块内存地址。
第一个代码:s1和s2 不同,分别指向不同的对象内存地址
public class Test A{ public static void main(String args[]) { String s1 = new String("Hello"); String s2 = new String("Hello"); System.out.println(" s1== s2 is " + (s1 == s2)); System.out.println(" s1.equals(s2) is " + s1.equals(s2)); } }
结果:
s1== s2 is false s1.equals(s2) is true
第二个代码:由于字符串常量池的原因,s1和s2相同
public class Test A{ public static void main(String args[]) { String s1 =“Hello”; String s2 = “Hello"; System.out.println(" s1== s2 is " + (s1 == s2)); System.out.println(" s1.equals(s2) is " + s1.equals(s2)); } }
结果:
s1== s2 is true s1.equals(s2) is true
根据以上两个代码,比较值是否相等是equals(),比较两个引用是否指向同一内存地址是”==“。不过老师下面的代码:
却显示equals()比较的就是两个引用指向的内存地址是否相同。疑惑,难道是String和普通类创建对象有什么不同?