方法声明中参数声明之前的final关键字

gur*_*hni 2 java methods final parameter-passing

class hello {
    public static void main(String arg[]){

    int[] c = { 2 };
    final int[] d = { 3 };

    }

static void useArgs(final int a, int b, final int[] c, int[] d) {

    c[0]=d[0]; // no error 
    c = d; //error 
    }
 }
Run Code Online (Sandbox Code Playgroud)

伙计们可以解释一下这种行为吗?

Thi*_*ara 6

变量c是最终的.这意味着您无法为该变量分配其他值.

但是数组中的元素本身并不是最终的,这就是为什么你能够改变像元素这样的元素的赋值c[0]=d[0].