2013-01-17 34 views
0

Screencap值比较困惑我,不能正常工作

我比较两个字符串,显然他们不是平等的,但他们。我想知道有哪些问题可能会导致这种情况,可能是数据类型,隐藏的东西,我看不到,或什么。任何输入可能会有所帮助。谢谢。

+0

你**不**做价值比较;应用于对象的'=='运算符确实是* reference *比较 - 如果它们是完全相同的对象,它将只返回true。 –

回答

2

字符串/对象比较应该使用equals(),不==(节选字符串文字比较的情况下)

实施例:

if(string.equals(string2)){ 
} 

==检查引用相等,equals()检查的内容相等。阅读此discussion

+1

只需添加到:==检查对象的引用是否相等,.equals()检查字符序列相等 –

+0

谢谢大家。这对于C++来说也是如此,或者是Java特定的? –

+0

@ user1582340:不知道C++,但它在Java中是真实的,在.NET中不是这样。 – kosa

1

使用.equals()方法检查字符串相等field1.equals("formDateCreated")==运算符只是检查两个引用变量是否指向同一个字符串实例。 equals()方法检查两个字符串是否有意义相等。

1
equalsIgnoreCase(String anotherString) 

,以便您在不考虑有关情况。这种检查的天气里串含量等于没有这==

我建议你检查像波纹管

"formDateCreated".equalsIgnoreCase(field) 

因此,它可以帮助你克服可能的NullPointerException参考

2
field.trim().equalsIgnoreCase("formDateCreated") 

尝试这个。 String trim()方法返回字符串的副本,省略前导和尾随空白。

+0

“formDateCreated”.trim()不需要在这里修剪,因为这里没有空格 – Suranga

+0

是的,我知道但可能是user1582340因此而出现问题。 –

+0

没有修剪是注意到这个问题。但是你不需要trim()这个“formDateCreated” – Suranga