Вычитание «трюк» для сравнения двух числовых значений ломается !!!
int a = -2000000000;
int b = 2000000000;
System.out.println(a - b);
// prints "294967296"
Здесь a < b
, но a - b
положителен.
DO NOT используйте эту идиому. Это не работает.
Кроме того, , даже если он работает , он NOT обеспечит существенное улучшение производительности и может фактически стоить читабельность.
Integer.MAX_VALUE
. В более общем плане, остерегайтесь переполнения int
. Еще один урок состоит в том, что вам следует избегать «умного» кода. Стремитесь писать четкий, правильный код и не оптимизировать его, если это не доказывает необходимость.