在这里,我正在训练我的 OCP 并测试一些字符串行为。
当我得到这个时:
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);
但是,这个编译器规则存在概念性错误,还是没关系?
最佳答案
在第一种情况下,substring
返回 this
,并且 this == this
按预期返回 true。
在第二种情况下,substring
返回一个新对象,因此 ==
返回 false,因为您正在比较不同的对象。
关于java - Java String 方法存在概念错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525231/