In theory, there should be no difference in speed or memory usage - internally, the variables work the same way. In practice, letting the compiler know that something is a constant can lead to better optimizations.
However, the most important reason is that using constants (or immutable objects) helps prevent programmer errors. It is no coincidence that method parameters and iterators are constant by default.
Using immutable objects is also very useful in multi-threaded applications, as they prevent one type of synchronization problem.
source share