回顾比较2个字符串Java

时间:2012-10-23 18:22:47

标签: java

你好我使用2种不同的方法检查一个单词,如果它是一个回文或者不是.. 1种方法是硬编码的(这可以按预期工作)而另一种方法我使用Stringbuilder但是我总是得到真实而且从不作为输出错误。我不明白为什么它不工作时没有硬编码...这是我用于测试的代码。 (评论的变量工作)

      public static void main(String[] args) {

      StringBuilder a = new StringBuilder("did");

      StringBuilder b = a.reverse();


     // String a = "did";
     // String b = "dad";

      if(b.equals(a)) {
          System.out.println("true");
      }
      else {
          System.out.println("false");
      }

      System.out.println(b);
      }

1 个答案:

答案 0 :(得分:9)

因为,StringBuilder#reverse确实可以实现逆转。因此,a.reverse()也会更改a的值。

您可以创建StringBuilder的副本。

    StringBuilder a = new StringBuilder("did");
    StringBuilder b = new StringBuilder(a);

    if (b.toString().equals(a.reverse().toString())) {
        System.out.println("true");
    } else {
        System.out.println("false");
    }

您需要使用toString()来比较内容。在StringBuilder实例上使用equals将比较references