【问题标题】:Strange quote characters around static java String (on android?)静态java字符串周围的奇怪引号字符(在android上?)
【发布时间】:2014-12-12 17:30:49
【问题描述】:

我在一个类中定义了一个字符串常量:

public static final String ABC = "abc";

我想比较一下,如果另一个字符串相等:

String test = "abc";
if (test.equals(OtherClass.ABC)) {
    doSomething();
}

这个测试奇怪地失败了,当我用 eclipse 检查变量时,我看到 ABC 比测试长 2 个字符,它看起来像这样:

ABC: "abc"
test: abc

这些引用来自哪里,我如何摆脱它们?

【问题讨论】:

  • Eclipse 编辑器在调试时默认会在字符串周围加上引号。
  • 我看不出if 条件如何返回false。你能提供一个可编译的例子来证明这一点吗?
  • 这些报价来自 OtherClass.ABC... 您未包含的代码。使用String的replace(String, String)方法修复问题。
  • @Kon 如果正在查看调试器的报价,测试不会失败
  • @Duncan 尝试编译一个,但它可以工作。也许这是一个android的东西? OtherClass 只是一个持有大量这些常量的助手。周一我回来工作时,将尝试将其归结为“工作”示例。

标签: java android eclipse string


【解决方案1】:

你是对的,它确实在快速预览中用额外的双引号包围了该值。

但是当您从Expresions 视图中检查该值时,该值是正确的。此外,它修复了快速预览的先前行为

但输出仍然是预期的。这两个值相等。我相信这是一个错误,因为这种行为对我来说没有意义。不过我可能是错的。我不知道这是否有帮助,是否可以将其视为答案,但我想包括屏幕截图,而 cmets 不支持。

代码不是来自 android 项目。只是一个简单的Java项目。我正在使用日食开普勒。

class OtherClass {
    public static final String ABC = "abc";
}

public class MainJsoup {

    public static void main(String[] args) throws Exception {
        String test = "abc";
        if (test.equals(OtherClass.ABC)) {
            System.out.println("They are equal.");
        } else {
            System.out.println("They are unequal.");
            System.out.println("OtherClass.ABC = " + OtherClass.ABC);
        }
    }
}

【讨论】:

  • 是的,你可以在你的截图中看到不同的长度,在我的截图中,甚至哈希是不同的。可能是一些奇怪的android东西,我会调查更多,谢谢!
  • 更多的是日食奇怪的东西。没问题。我很高兴能帮上忙。玩得开心。
  • 哇,一定是一些奇怪的 Eclipse 缓存的东西,它今天消失了。迫不及待地想切换到 Android Studio 并体验他们的错误。 :P 谢谢大家的帮助!
猜你喜欢
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 2011-01-27
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多