.equals Java String Class方法如何工作?

时间:2018-11-12 13:19:42

标签: java class methods

在Java中,有一个字符串类方法,如下所示。但是我不知道我们如何能够在字符串类型的随机变量上调用该方法?

String word = "hello"
word.equals("hello");

输出为真

4 个答案:

答案 0 :(得分:5)

equals()方法用于验证两个Java类的实例的状态是否相同。因为equals()来自Object类,所以每个Java类都继承它。但是equals()方法必须被重写以使其正常工作。当然,字符串会覆盖equals()

看看:

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }

    if (anObject instanceof String) {
        String aString = (String)anObject;
        if (coder() == aString.coder()) {
          return isLatin1() ? StringLatin1.equals(value, aString.value)
            : StringUTF16.equals(value, aString.value);
        }
    }

    return false;
}

如您所见,String类值的状态必须为equals(),而不是对象引用。对象引用是否不同并不重要;字符串的状态将被比较

我从here那里拿走了它。如果您也对字符串池有所了解,那就更好了。所以请参考链接

答案 1 :(得分:2)

String类(Java中的字符串为Object)类从Object继承了equals方法,并按照Sand和Armine的答案正确提及的方法重写了该方法。

我们可以在String上调用方法(即使在常量String上,声明:“ Hello World” .length()也会返回11)因为String是一个Object而不是原始类型。基本类型为byte,short,int,...。您可以详细了解它们here

关于原语类型和对象之间差异的妙读:Difference between Primitive and Reference variable in Java

答案 2 :(得分:1)

equals方法将调用该方法的字符串与作为参数传递的字符串进行比较。

看看这些链接:

String Comparison

Equals on String

Overriding equals in String class

答案 3 :(得分:1)

如果您将String与类似int,long之类的原语进行比较。 答案是 字符串不是原始的。这是一堂课。有几种方法可以从此类创建对象, 喜欢

String word=new String("hello");
String word="hello"; //special case for String class

现在word成为一个对象,您可以调用方法equals(因为您创建的每个对象都是从java.lang.Object继承的)类。

如果您查看诸如int之类的原语。 您不能执行以下操作,因为number不是对象。

int number=12; 
number.equals(12)