Der Subtraktions- "Trick" zum Vergleichen zweier numerischer Werte ist gebrochen !!!
int a = -2000000000;
int b = 2000000000;
System.out.println(a - b);
Hier ist a < b
doch a - b
noch positiv.
Verwenden Sie diese Redewendung NICHT. Es funktioniert nicht.
Außerdem , selbst wenn es funktioniert , wird es nicht eine wesentliche Verbesserung der Leistung, und kann in der Tat Kosten Lesbarkeit.
Siehe auch
- Java Puzzlers Puzzle 65: Eine seltsame Saga verdächtiger Art
Dieses Puzzle hat mehrere Lektionen. Das spezifischste ist: Verwenden Sie keinen subtraktionsbasierten Komparator, es sei denn, Sie sind sicher, dass der Unterschied zwischen den Werten niemals größer als sein wird Integer.MAX_VALUE
. Achten Sie generell auf int
Überlauf. Eine weitere Lektion ist, dass Sie "cleveren" Code vermeiden sollten. Bemühen Sie sich, klaren, korrekten Code zu schreiben, und optimieren Sie ihn nur, wenn er sich als notwendig erweist.