Нет, нет.
Java "final" не является точным эквивалентом C ++ "const". Следующее (отложенная инициализация конечной переменной) работает в Java:
final double x;
int w = 1;
if (w > 2)
{
x = 0.5;
}
else
{
x = - 0.5;
}
но это не работает в C ++ с заменой «final» на «const».
Использование «final» для переменной в объявлении метода может быть полезно в Java, поскольку позволяет использовать эту переменную внутри любого анонимного класса, созданного внутри вашего метода.
PS. Сначала я был разочарован отсутствием «const» в Java, но позже научился жить с «final».
PS2. В глоссарии Java (http://mindprod.com/jgloss/immutable.html), ссылка на который есть в этой теме, есть одна неправильная вещь: нет, вам не дается 100% гарантия того, что конечная переменная не изменит своего значения:
1) он изменяется с «неопределенного» на «определенный», но компилятор сообщит вам, если вы ссылаетесь на него перед инициализацией
2) в Linux double имеет 80-битную точность при хранении в регистре, но 64-битную при хранении в памяти. Когда последняя двойная переменная выталкивается из регистра, она будет усечена и изменит свое значение. Как говорит Джоэл Спольски, «абстракция породила утечку».