("kg"=="kg")返回false.我怎么告诉java,这个比较返回true?

wur*_*ese 2 java android

可能重复:
Java字符串比较?

我试图这样做:

boolean exit = false;
while(exit==false && convStoreIndex<convStoreLength) {
  if(conversionStore[convStoreIndex].getInUnit()==inUnit) {
    indexCount++;
    exit=true;
  }
  convStoreIndex++;
}
Run Code Online (Sandbox Code Playgroud)

但if-condition永远不会成功,即使两个字符串相同(在调试器中检查过).所以我添加了几行:

boolean exit = false;
while(exit==false && convStoreIndex<convStoreLength) {
  Log.v("conversionStore["+String.valueOf(convStoreIndex)+"]", conversionStore[convStoreIndex].getInUnit()+"|"+inUnit);
  String cs = conversionStore[convStoreIndex].getInUnit();
  String iu = inUnit;
  Log.v("cs", cs);
  Log.v("iu", iu);
  Log.v("Ergebnis(cs==iu)", String.valueOf(cs==iu));
  if(conversionStore[convStoreIndex].getInUnit()==inUnit) {
    indexCount++;
    exit=true;
  }
  convStoreIndex++;
}
Run Code Online (Sandbox Code Playgroud)

这是LogCat的摘录:

09-15 11:07:14.525: VERBOSE/cs(585): kg
09-15 11:07:16.148: VERBOSE/iu(585): kg
09-15 11:07:17.687: VERBOSE/Ergebnis(cs==iu)(585): false
Run Code Online (Sandbox Code Playgroud)

转换类存储:

class ConversionStore {
  private String inUnit;
  [...]
  public String getInUnit() {
    return inUnit;
  }
}
Run Code Online (Sandbox Code Playgroud)

谁会变得疯狂,java还是我?

Joa*_*uer 13

不要==用来比较String对象,使用.equals():

if(conversionStore[convStoreIndex].getInUnit().equals(inUnit)) {
Run Code Online (Sandbox Code Playgroud)

  • 我真的很高兴我今天已经超过我的200分上限,因为得到140个代表这个答案是错的.特别是因为它是一个明确的重复. (2认同)

Luc*_*ore 6

要比较字符串的相等性,请不要使用==.==运算符检查两个对象是否完全相同.两个字符串可以是不同的对象,但具有相同的值(在它们中具有完全相同的字符).使用.equals()方法比较字符串是否相等.

直接来自谷歌在搜索"Java字符串比较"时提供的第一个链接...