2
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 
    }
 }

誰でもこの振る舞いを説明できますか?

4

2 に答える 2

6

変数cは最終です。つまり、その変数に別の値を割り当てることはできません。

ただし、配列自体の要素は最終的なものではないため、のような要素の割り当てを変更できますc[0]=d[0]

于 2013-03-10T06:44:09.757 に答える
3

cは、intの配列への最後の(const)参照です。また、cはfinalであるため、その値を変更することはできません(つまり、参照するアドレスを変更する)。そしてこれは、finalとして宣言されたすべての変数(配列だけでなく)にも当てはまります。

これも機能しません:

final int c = 1;
int d = 2;
c = 2; // Error
c = d; // Error
于 2013-03-10T06:42:33.187 に答える