僕は昔からずーっと、finalを付けられる箇所にはすべて付けるようにしています。 ちなみにEclipseを使うと、セーブアクションで自動的にfinal宣言できるので超便利です。 不変オブジェクトを作るために、インスタンスフィールドをfinal宣言するようなケースは当然として、ローカル変数やメソッドの引数にも、finalを付けると素晴らしいメリットを享受できるのです。 その中でも一番重要なメリットは、 『意図していない代入を自動的にチェックできる』ということ。 例えば、誰かの書いたソースを読むときに int value1 = 1; final String value2 = this.calcValue2(); という宣言があったならば、この時点で 『なるほど、value2はこの時点で値が固定なんだね』 ということが判明するわけです。 ということは、この宣言以降のコードを読むときにvalue