2014-12-12 21 views
5

ich eine String-Konstante in einer Klasse definiert haben (auf Android?):Seltsame Anführungszeichen um statische Java-String

public static final String ABC = "abc"; 

Und ich will, vergleichen, wenn ein anderer String ist gleich:

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

Dieser Test scheitert seltsam und wenn ich die Variablen mit Eclipse inspiziere, sehe ich, dass ABC 2 Zeichen länger ist als der Test, und dass es so aussieht:

ABC: "abc" 
test: abc 

Woher kommen diese Zitate und wie werde ich sie los?

+2

Der Eclipse-Editor wird beim Debuggen standardmäßig Zeichenfolgen um Strings setzen. – Kon

+1

Ich kann nicht sehen, wie es möglich ist, dass diese 'if'-Bedingung' false 'zurückgibt. Können Sie ein kompilierbares Beispiel dafür bereitstellen? –

+2

Diese Zitate kommen von OtherClass.ABC ... Code, den Sie nicht enthalten haben. Verwenden Sie die replace (String, String) -Methode von String, um das Problem zu beheben. – snickers10m

Antwort

3

Sie haben recht, es umgibt den Wert mit zusätzlichen Anführungszeichen in der Schnellvorschau.

enter image description here

Aber wenn man den Wert aus der Expresions Ansicht inspiziert, dann ist der Wert korrekt. Außerdem behebt es das bisherige Verhalten der schnellen Vorschau

enter image description here

Aber immer noch der Ausgang der erwartet. Die zwei Werte sind gleich. Ich glaube, das ist ein Fehler, da dieses Verhalten für mich keinen Sinn ergibt. Ich könnte mich jedoch irren. Ich weiß nicht, ob das geholfen hat, und ob es als eine Antwort betrachtet werden kann, aber ich wollte die Screenshots hinzufügen und die Kommentare unterstützen das nicht.

Der Code stammt nicht von einem Android-Projekt. Nur ein einfaches Java-Projekt. Ich benutze Eclipse Kepler.

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); 
     } 
    } 
} 
+0

Ja, Sie können die verschiedenen Längen in Ihren Screenshots sehen, in meinen selbst der Hash war anders. Wahrscheinlich eine seltsame androide Sache, dann werde ich mehr nachforschen, danke! – sigma

+0

Mehr von einer Eclipse seltsame Sache. Kein Problem. Es freut mich, dass ich helfen konnte. Habe Spaß. – alkis

+1

Wow, muss eine seltsame Eclipse Caching Sache gewesen sein, es war heute weg. Ich kann es kaum erwarten, zu Android Studio zu wechseln und ihre Fehler zu erleben. : P thx für die Hilfe alle! – sigma

Verwandte Themen