我无法理解,为什么这个代码不工作为什么如果(value ==“imperial”)在Android中不起作用?
if(value=="imperial"){
high=high*1.8 + 32;
low=low*1.8 + 32;
}
但是,当我使用equals()方法,然后它工作流利....
if(value.equals(getString(R.string.imperial))){
high=high*1.8 + 32;
low=low*1.8 + 32;}
其中value是一个字符串而R.string.imperial引用字符串“imperial”。
'=='比较我认为的实际对象。尝试'.equals(“imperial”)' – Uroc327
'=='vs'.equals()':'String'是一个对象,因此您将'value'的内存位置与内存中的位置进行比较'字符串'文字''帝国''。它们的内存位置不同,因此'=='失败,而'.equals()'被'String'类重写以比较'char'值。所以如果'value =“imperial”'那么'value.equals(“imperial”)'是'true'。 注意:有些人使用'“imperial”.equals(value)'来代替,这就消除了'NullPointerException'的可能性。 –
可能的重复[如何比较Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) –