Java String方法中存在概念错误

时间:2014-05-07 18:14:52

标签: java string ocpjp

在这里,我正在训练我的OCP并测试一些String行为。

当我得到这个时:

    System.out.println("a".substring(0) == "a".substring(0));  // true

    System.out.println("a".substring(0) == "aa".substring(1)); // false

有些疑惑来到我身边。我知道该方法返回的是:

    return (beginIndex == 0) ? this : new String(value, beginIndex, subLen);

但是,这个编译器规则存在概念错误,还是一切都好?

2 个答案:

答案 0 :(得分:2)

在第一种情况下substring返回thisthis == this按预期返回true。
在第二种情况下,substring返回一个新对象,因此==返回false,因为您正在比较不同的对象。

答案 1 :(得分:1)

您正在使用错误的相等运算符。您想要.equals,而不是==。方法调用返回的字符串是否与使用相同的字符串对象是实现细节;你希望.equals比较他们的内容。