为什么我能够使用String文字调用String类方法?

时间:2017-10-24 03:24:15

标签: java string

首先,我使用Drjava交互窗格来测试我在这里发布的所有代码(在我目前的情况下,我无权访问任何其他IDE)。 我注意到我能够使用字符串文字和字符串对象调用属于String类的方法。也就是说,

String s1 = "a";  

s1可以访问所有String方法,例如getBytes(),length(),charAt()等。

在整数的情况下,int变量无法访问Integer类中的方法。

为什么会这样?

旁注:

当我尝试比较具有相同值的两个字符串文字时,如

String s1 = "a";
String s2 = "b";

s1 == s2;

我得到的布尔值是假的,根据我读过的关于字符串文字和字符串对象的众多帖子/文章,这不应该是这种情况。

这是否与Drjava的具体功能有关?这是我能够使用字符串文字调用String方法的部分原因吗?

2 个答案:

答案 0 :(得分:3)

String文字是String类的一个实例,因此能够在其上调用方法是完全正常的。 String个实例和String文字之间没有区别,它们是同一个。

另一方面,int是一种原始类型,不同于Integer,它是一个可以拥有自己实例的类。

最后,您不应该使用==比较对象,除非要比较它们的身份,通常您应该使用equals()来测试相等性。为什么"a" == "b"返回false感到惊讶?他们不相等,更不一样,相同。

答案 1 :(得分:0)

字符串是对象。整数是原始的。

为了比较两个字符串,你必须使用string1.equals(string2)。