You should try to do this, whenever it is appropriate. Besides serving to warn you when you "accidentally" try to modify a value, it provides information to the compiler/jdk that can lead to better optimization of the class file.
It's Effect : Well if you make a local variable final as per definition you can never change it. So in future if you want to assign a different value to the local variable you need to remove the final keyword. a bit of rework. Other than that i dnt see any harm why you shouldn't make a local variable final.
Ref book : "Hardcore Java" by Robert Simmons, Jr.
The book spends all of its second chapter on the use of final to promote optimizations and prevent logic errors.
Hope it helpful to you