这是你自己那段代码
i = 0;
while( i < 3) {
final int a = i;
System.out.println(a);
i++;
}
再看另一段代码
void f(final int a)
{
a++;
}//error,can't compile
final限定了指向该对象的引用不能再更改。在第一段代码中a指向了i,就不能再让a指向另外一整型变量j,但i本身是可以修改的;而在第二段中,直接对a做修改,这是不行的。
final int a = i;
a 的地址不变,可以看看hashcode