Разница между final и static в объявлении констант в Java заключается в их функциях. 15
Final означает, что значение переменной не может быть изменено. 14 После присвоения значения его нельзя переприсвоить. 1 С помощью final можно сделать неизменяемыми примитивные типы данных (например, int, short, long, byte, char, float, double, boolean). 1
Static позволяет использовать переменную без создания экземпляра класса. 1 Статическая переменная связана с самим классом, а не с объектом. 1 Для всех экземпляров класса доступна одна и та же копия переменной. 1
Часто модификатор static используется в связке с final для создания неизменяемых переменных — констант. 2 Такие переменные имеют фиксированное значение, которое не может быть изменено после инициализации, и доступны в любом месте программы. 2