Beim Überprüfen, ob eine Variable null ist, habe ich gesehen, dass der vorgeschlagene Codierungsstil if(null == a)
ist. Was ist der Unterschied zwischen diesem und if(a == null)
?Unterschied zwischen 'a == null' und 'null == a'
Antwort
Es gibt keine.
Menschen werden manchmal null == a
aus historischen Gründen schreiben, weil es die Möglichkeit, einen Tippfehler bedingten Fehler in C entfernt Wenn Sie schreiben würden:
if (a = NULL) { // note, only single =
...
in C, dann das wäre die Zuordnung Anweisung ausführen a = NULL
, wobei das Ergebnis der Anweisung der zugewiesene Wert ist (dh NULL). Anstatt also den Wert a
zu überprüfen, setzen Sie ihn auf NULL und überprüfen dann im Wesentlichen if (NULL)
, was immer falsch ist. Dies kompiliert, aber ist fast sicher nicht das, was Sie wollen. Und es ist alles wegen eines kleinen Tippfehlers von =
vs ==
.
Wenn Sie NULL
zuerst setzen, dann ist if (NULL = a)
ein Kompilierungsfehler, da Sie der Konstante, die NULL darstellt, keinen Wert zuweisen können.
In Java ist dies nicht erforderlich, da if (null) {...
nicht kompiliert wird. (Sie können haben immer noch die gleichen Fehler in Java mit boolean Variablen. if (someBooleanVar = someMethod())
Aber das ist ein relativ seltenes Muster.)
Dieser Stil wird manchmal als „Yoda conditions“, da es von Yodas skurrilen Sprechstil erinnert ist in Krieg der Sterne.
Für einen ==
Vergleich, keine. Einzelheiten finden Sie unter JLS. Für equals
ruft a.equals(null)
die Methode equals
auf, die in der Klasse A mit dem Parameter null
definiert ist, während null.equals(a)
ungültig wäre.
Sie könnten jedoch auch in Betracht ziehen, wo eine der Seiten des Vergleichs nicht unbedingt ein Nullwert ist, sondern Nullable ist. In diesem Fall (notNull
und nullable
sind beide lokale Variablen oder Felder eines Referenztyp:
notNull==nullable
ist die gleiche wie
nullable==notNull
aber
notNull.equals(nullable)
sollten keine Nullpointer während werfen nullable.equals(notNull)
wird einen werfen, wenn nullable
null ist
- 1. Unterschied zwischen nicht null (a), wo (a) und argwhere (a). Wann welche verwenden?
- 2. Diffrence zwischen $ a = ''; und $ a = NULL; in php
- 3. Unterschied zwischen a - = b und a = a - b in Python
- 4. Unterschied zwischen a + = 10 und a = a + 10 in Java?
- 5. Shorhand für a = (a == val1)? null: val1;
- 6. A anstelle von null
- 7. Gibt es einen Unterschied zwischen A a; und A a = A()?
- 8. Unterschied zwischen Null == Objekt und Objekt == null
- 9. Unterschied zwischen NULL und Null in PHP
- 10. Numpy: Unterschied zwischen a [i] [j] und a [i, j]
- 11. Unterschied zwischen $ a == 5 und 5 == $ a in php
- 12. Unterschied zwischen $ ('# tabs a') und $ ('# tabs'). Finden ('a')
- 13. QAbstractVideoSurface Generating A Null Image
- 14. Was ist der Unterschied zwischen auto a = A (3) und A a (3)?
- 15. Unterschied zwischen a || a = b und a = a || b in Rubin?
- 16. Unterschied zwischen null default null und default null in mysql?
- 17. Unterschied zwischen. Nil? und == null
- 18. wenn (a = null && ein instanceof A!) ... oder wenn (a Instanceof A)
- 19. Unterschied zwischen Object.create (null) vs {}?
- 20. Was ist der Unterschied zwischen double a = a + int b und int a + = double b?
- 21. Unterschied zwischen „? Alert (a) '' und '' alert (a); var a = 1; '' in JavaScript
- 22. Unterschied zwischen diesen Ausdrücken: int * a = 0; int * a = 10;
- 23. Unterschied zwischen Nil und Null und Null in Objective-C
- 24. null und NULL, gibt es einen Unterschied?
- 25. Leistungsdifferenz zwischen einem + = b und a = a + b
- 26. Chartist.js wirft einen TypeError: a ist null
- 27. Lisp: Gibt es einen Unterschied zwischen 'Null und Null?
- 28. Unterschied zwischen if (a - b <0) und if (a <b)
- 29. Unterschied zwischen null? und leer? in Schema
- 30. Unterschied zwischen ObjectOfFoo = null und ObjectOfFoo.Dispose()
Großartige Arbeit, einschließlich historischer Kontext, sowie erklären, warum es nicht mehr anwendbar ist. – Xynariz
Ehrfürchtige Erklärung – Tarik