Diferencia entre constante y variable

Saludos,
Se que el titulo suena bastante trivial, pero me gustaría saber cual es la diferencia técnica entre una variable y una constante. Entiendo que una variable como dice su nombre puede variar deacuerdo al uso que a este le demos, y una constante no; pero que es lo que hace que se distinga uno del otro, tal ves se posicionan en lugares distintas de memoria?, por otra parte una variable se podría comportar como una constante si no la modifico? porque al final el programador define si este cambiará o no de valor.

Gracias !!!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

no

"puede variar de acuerdo al uso que le demos" - NO. Incorrecto.

Una variable puede guardar un valor y luego puede guardar otro valor; su valor varía, puede ser modificado, es mutable. Una constante tiene un valor y ya nunca se puede modificar.

La diferencia es que la constante no la puedes ni siquiera intentar modificar desde tu código porque el compilador no te deja, pero además si quisieras hacerlo por medio de reflection en tiempo de ejecución, obtendrías un error de todas formas.

Para hacer constante un valor en Java, utilizas la palabra reservada final.

int a = 5;
final int b = 2;
a = 7; //esto es válido
b = 5; //esto no compila

Si nunca modificas a es otra historia; que si se comporta como una constante, pues es una discusión ociosa. La cosa es que en cualquier momento alguien puede escribir código que la modifique, mientras que b es una constante, nadie la puede modificar a menos que vayan y le quiten el final en su declaración.