Зачем нужно ключевое слово assert?

Посмотреть в Telegram: @JavaSobes/180
assert – не то же самое, что методы вроде assertTrue() из тестовых библиотек. Это зарезервированное ключевое слово, унарный оператор.

Этот оператор ничего не возвращает, а принимает проверяемое утверждение типа boolean. Если значение оказывается false, проверка утверждения считается проваленной и выбрасывается AssertionError. Это похоже на сокращенную запись пары if и throw, с фиксированным типом исключения.

В Java до версии 4 слово assert не было ключевым. Поэтому для обратной совместимости механизм проверки утверждений выключен по умолчанию – логика программы никогда не должна полагаться на assert!

Включается флагом -ea или -enableassertions команды java. Можно указывать конкретные классы и пакеты в которых включить. Есть противоположный флаг -da (-disableassertions), эти флаги можно использовать в комбинации.

Assertion-ы используются в основном для дополнительной проверки инвариантов состояния объекта и для подстраховки в коде, который не должен никогда вызываться. Выброшенный AssertionError обычно означает ошибку программиста.

Дополнительно у оператора assert есть синтаксис передачи параметра detailMessage в конструктор AssertionError:
assert 2*2==5 : "two times two is not five!";