谁能从虚拟机的角度解释一下,谢谢:)

解决方案 »

  1.   

    当含有final属性的类被加载进内存并且被实例化的时候,就会为这个final属性分配内存,同时必须对该属性进行初始化,之后不可变。也就是说如果是基本类型的,那么它的值不能再改变;如果是对象,则引用不可变,而对象本身还是可以改变的
      

  2.   


    说的很清楚了!final int id = 1; // 基本类型,不可改变
    final Object obj = new Object(); // 则引用不可改变,但 obj里面的属性可以改变!
      

  3.   

    我还有一个问题,对于接口的定义
    Interface A
    {
         final Obj b = new Obj("123");//大家觉得这行有错误么?为什么?
    }
      

  4.   

     接口中的成员变量默认的就是static final类型的,表示的是顶级的属性。不应该再加上final的。
      

  5.   

    错误的,在接口中默认是final类型
      

  6.   

    应该不会报错吧,默认是fianl了,你写出来也是一样了
      

  7.   

    final修饰基本类型的变量时,表示常量,修饰引用类型时表示对象变量的值不变,对象里面的内容可以改变。