public class test {
    public static void main(String[] args)
    {
        final int[] m = {0};
        final int n = 0;
        m[0] = 1;
        //n = 1;
    }
}
这段程序,为什么可以对m[0]赋值,不能对n赋值

解决方案 »

  1.   

    final是常量,赋值后不能修改
    final int[] m是说m是个常量数组,m本身不能修改,但是m的每个元素可以修改
    LZ试试 final int[] m = {0}; m = new int[10];看看就知道,修改m和修改m[0]是两回事,前者是数组,后者是数组元素
      

  2.   

    1楼说的对。
    final int n = 0;说明n是一个常量,永远不能修改。
    final int[] m = {0};说明m是个常量数组,意思是说m永远只能指向这一个数组。但数组内部元素的值可以变化,这和final没关系。
      

  3.   

    你也可以理解为final后面定义的变量(常量/数组)只能代表这个固定地址的变量。