共同的问题

本着其他平台的精神,跟进这个问题似乎是合乎逻辑的:Java中常见的非显而易见的错误是什么? 看起来他们应该工作的东西,但不要。

我不会给出如何构建答案的指导方针,也不会给出指导方针,因为这就是投票的目的。

也可以看看:

  • Perl - 常见的陷阱
  • .NET - 共同的陷阱

  • 比较使用==而不是.equals()的对象的等.equals() - 对于基元的行为完全不同。

    "foo" == "foo"new String("foo") != new String("foo")时,这个gotcha确保新手感到困惑。


    "a,b,c,d,,,".split(",").length
    

    返回4, 而不是 7,你可能(我当然是)期望。 split忽略所有返回的空尾字符串。 这意味着:

    ",,,a,b,c,d".split(",").length
    

    返回7! 为了得到我认为是最“令人惊讶”的行为,你需要做一些非常惊人的事情:

    "a,b,c,d,,,".split(",",-1).length
    

    得到7。


    重写equals()而不是hashCode()

    使用地图,集合或列表时,它可能会有非常意想不到的结果。

    链接地址: http://www.djcxy.com/p/17897.html

    上一篇: Common Gotchas

    下一篇: How do I compare strings in Java?