-3

我正在运行这个程序。检查字符串池概念。我参考了这个链接 并在java中的Object类中添加了两行equals方法。为什么我得到 objRef1==objRef2 与 objRef1.equals(objeRef2) 的不同输出。在我看来,它们应该是相同的。

public class Abc2 {
    public static void main(String[] args) {
        String s1 = "Cat";
        String s2 = "Cat";
        String s3 = new String("Cat");

        System.out.println("s1 == s2 :"+(s1==s2));
        System.out.println("s1.equals(s2) :"+(s1.equals(s2)));
        System.out.println("s1 == s3 :"+(s3==s2));
        System.out.println("s1.equals(s3) :"+(s3.equals(s2)));
    }
}
4

1 回答 1

0

字符串是一个复杂的数据类型,所以 == 找到两个不同的参考。Strings equals() 比较的是内容而不是引用。所以两个“猫”有相同的内容,但不是同一个对象。就像您尝试说 C:\test.txt 和 C:\test2.txt 相同的文件在哪里,因为它们具有相同的内容。

于 2018-08-07T04:24:33.690 回答