java中的final 数组内容为什么可以改变,
such as:
        final int b[2]={1,2};
        b[1]++;
        System.out.println(b[1]);//结果是3

解决方案 »

  1.   

    final int b[]只是说你的b数组不能再指向其他数组对象,
    但它指向的数组的内容是可以变的!
      

  2.   

    final int b[2]={1,2}; 
    的意思是这个b指向的地址不能改变,不是内容不能改变。你试一试  int c[2]={3,4}; b=c;肯定编译不过,因为不允许你改变他指向的地址。
      

  3.   


     final使得被修饰的变量"不变",但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义:引用本身的不变,和引用指向的对象不变。 final StringBuffer a=new StringBuffer("immutable"); 
    a.append(" broken!"); //编译通过 
      

  4.   

    java中的常量永远不能修饰对象的实际内容。即:
    final int b[2]={1,2}; 
    b[1]++;                //OK                
    b = new int(){1,2};    //NOT OKint b[2]={1,2}; 
    b[1]++;                //OK                
    b = new int(){1,2};    //OK
      

  5.   

     final int b[2]={1,2};
     表示 b只能指向{1,2}这个数组,只能作为{1,2}的引用,不能指向其他的数组了.
     但,{1,2}这个数组的内容是可以改变的.