关于Java中的子字符串测试

时间:2013-11-19 02:09:45

标签: java

我正在编写一些代码来测试字符串中是否有“xx”。例如,doubleX(“aaxxbb”)应该返回true,而doubleX(“axabb”)应该返回false。

这是我的代码:

private static boolean doubleX(String str) {
  for(int i=0;i<str.length()-1;i++){
      System.out.println(str.substring(i,i+2));
      if(str.substring(i,i+2) == "xx") return true;
  }
  return false;
}

为什么doubleX(“aaxxbb”)返回false?

3 个答案:

答案 0 :(得分:2)

您必须使用.equals代替==。有关详细信息,请按照复制邮件进行操作。

return str.contains("xx");

虽然更清楚。

答案 1 :(得分:1)

你应该理解==和equals之间的区别:第一个比较参考,第二个比较实际值。

您的代码效率非常低。

我会尝试这样的事情:

private static boolean doubleX(String str) {
    return (str.indexOf("xx") != -1);
}

答案 2 :(得分:0)

使用equals()检查字符串的内容而不是====检查引用相等性。

private static boolean doubleX(String str) {
        for(int i=0;i<str.length()-1;i++){
            System.out.println(str.substring(i,i+2));
            if(str.substring(i,i+2).equals("xx")) return true;
        }
        return false;
      }

即使你可以直接编码如下:

private static boolean doubleX(String str) {
        return str.contains("xx");
      }