因为你每次循环都重新定义了这两个变量啊,与以前的那个是不同的。
如果是这样就错了:
final String aa = a[0];
final String bb = b[0];
for (...) {
    aa = a[i];
    bb = b[i];
}

解决方案 »

  1.   

    个人觉得这个也没有特别的地方吧。就是你去掉final也是类似的。毕竟就是一个{}中的变量的scope而已吧。
      

  2.   

    yuanmeng163(今天我有空)说的对,你在循环代码块中定义的是局部变量,当你的程序运行到System.out.println(aa + bb);
        }退出这个代码块之后,你定义的这两个变量就不再存在了;当你的代码执行循环,再次进入之后,你又重新定义了这两个变量,当然非常的正常。
      

  3.   

    我记得c语言中循环中的局部变量是第一次循环定义,以后的循环不再重新定义,只是引用,否则循环次数很大的话,比如一百万次,就要定义一百万次变量,效率非常低吧所以我认为在没有final标记时,和c的行为一样,只有加了final才会做每次循环重新定义的工作,是不是这样的呢?