2010-01-12 94 views
0

不应该通过一个对象平等?equals()方法?

String hej = pets.getBark(); 
    if(hej.equals("woff")) 

为什么你能够传递一个字符串woff?

+2

字符串是一个对象。 – 2010-01-12 06:44:04

回答

2

引擎盖下,一个字符串(引号内的文本)自动由String实例代替。 (文字字符串是new String简写)

这就是为什么这个代码工作:String hello = "hello";

所以,

String hej = pets.getBark(); 
if(hej.equals(new String("woff"))) {} 

等同于你所提供的代码。

+3

实际上并不完全一样,由于字符串interning,IIRC。 – 2010-01-12 04:22:22

2

带引号的字符串是一个对象。它是String类的一个实例。

6

如果我正确理解您的问题,您想知道为什么字符串值可以传递给接受类型为String的参数的方法。这是因为一个字符串文字是一个String实例的简写(新的实例或已被保留通过实习的方式以前创建的实例):

String类描述字符 字符串。 Java 程序(如“abc”)中的所有字符串文字都是 ,其实现为此 类的实例。

2

您可以通过java.lang.Stringjava.lang.Object的子类型,因为Liskov substitution principle这样说。

+0

不是什么OP问,但仍然是一个好点。 – 2010-01-12 04:32:15