Java substring.equals 与 ==

标签 java awk iteration substring

使用标准循环,我将子字符串与字符串值进行比较,如下所示:

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/

相关文章:

c# - 如何从迭代方法到递归方法

java - JAXB 解码忽略 SOAP 信封/ header 标记

java - 使用 Jaxb 将部分 XML 解码到 org.jdom.Element 的实例

java - 不创建插件就不能在 Eclipse 中使用 JFace 和 SWT

linux - 按特定顺序合并 3 个文件的 Bash 代码

iteration - SICP - 我对阶乘迭代过程的递归定义不好吗?

Java HTML 表单客户端

bash - 将 CSV 文件的第一行全部改为大写

bash - 使用 UNIX 批量重命名文件 - 我应该使用 awk 吗?

list - 使用条件语句迭代 OCaml 列表