Taken from the following article: http://www.javapractices.com/topic/TopicAction.do?Id=23
- clearly communicates your intent
- allows the compiler and virtual machine to perform minor optimizations
- clearly flags items which are simpler in behaviour - final says, "If you are looking for complexity, you won't find it here."
This is also discussed in this question: Can excessive use of final hurt more than do good?