Добавлю, что final - не совсем синоним константе, так как значения констант известны ещё до компиляции. Это прямые значения, например, 3, 10, 15.5, "строка". final же переменная может содержать в себе и разные объекты. А также суть final-переменной в том, что ей можно задать значение только один раз. То есть можно как сразу записать в поле:
public static final int value = 10;
Так и записать просто вот это:
public static final int value;
А значение задать уже в конструкторе. Значение задаётся один раз, да, но не при объявлении поля, а в конструкторе. С константами так нельзя.