使用标准循环,我将子字符串与字符串值进行比较,如下所示:
if (str.substring(i, i+3) == "dog" ) dogcount++;
它打破了迭代。在第一个增量之后,将不会检测到“dog”的更多实例。
所以我使用了 substring.equals,并且有效:
if (str.substring(i, i+3).equals("dog")) dogcount++;
我的问题是,为什么?只是寻求更好的理解,谢谢。
最佳答案
您应该使用 equals()
而不是 ==
来比较两个字符串。
s1 == s2
如果两个字符串指向内存中的同一个对象,则返回 true。这是初学者常见的错误,通常不是您想要的。
s1.equals(s2)
如果两个字符串物理上相等(即它们包含相同的字符),则返回 true。
关于Java substring.equals 与 ==,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10759453/