2016-08-09 62 views
3

Ich habe den Code auf Github durchsucht und festgestellt, dass jemand auf diese Weise zwei Strings vergleicht.Verschiedene Möglichkeiten, Strings zu vergleichen

if ("whatever".equals(theString)) 

Gibt es einen Unterschied zwischen der normalen Art und Weise zu vergleichen Strings

if (theString.equals("whatever")) 

und die oben beschriebene Weise?

Ich bin mir nicht sicher, ob eine ähnliche Frage schon einmal gestellt wurde, wenn ja, entschuldige ich mich.

+3

'theString.equals ("was auch immer")' kann Nullpointer werfen. 'was auch immer" .equals (theString) 'kann nicht. – Eran

+0

Danke für die schnelle Antwort;) – Jeremy

+2

[Yoda-Notation] (http://StackOverflow.com/Documentation/Java/1003/Nullpointerexception/12297/using-Yoda-Notierung-zu-Prevent-NPes#T=201608090726261343276) nannte dies ist. – fabian

Antwort

7

if("whatever".equals(theString)) hat den Vorteil, dass, wenn theString ist null Sie kein NullPointerException treffen wird. Der Rest ist der gleiche.

2

Wie bereits von anderen hingewiesen, wird Yoda Notation verwendet, um mögliche NPE zu vermeiden. Ich glaube jedoch nicht, dass es ein Vorteil ist, einen möglichen Fehler in Ihrem Code zu verbergen.

Mit

"whatever".equals(theString) 

wird NPE nicht werfen, aber Sie könnten Sache, dass alles wie erwartet funktioniert. Denken Sie an eine Situation, in der Sie Ihre Zeichenfolge nicht initialisieren konnten und sie null bekam, Ihr Code wird nicht brechen und die Bedingung wird als falsch ausgewertet.

Wenn null etwas gibt, sollten Sie es überprüfen und behandeln sie entsprechend:

if (theString == null) { 
    // log, initialize or whatever 
}