在Java中,有一个字符串类方法,如下所示。但是我不知道我们如何能够在字符串类型的随机变量上调用该方法?
String word = "hello"
word.equals("hello");
输出为真
答案 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方法将调用该方法的字符串与作为参数传递的字符串进行比较。
看看这些链接:
答案 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)