package ch7;public class FinalExample { /**
 * @param args
 */
static final int i;
public static final int total=10;

public FinalExample (int i){
this.i=1;

}
public static void main(String[] args) {
// TODO Auto-generated method stub
FinalExample example =new FinalExample(1);
example.i=10;

}}
显示说因为final错误,但是感觉没有错误压

解决方案 »

  1.   

    当然有错啊,final修饰变量 ,表示这个变量一旦被初始化便不可改变,相当于常量了。
      

  2.   

    .
    但是为什么呢
     FinalExample (){
    this.i=1;
    } 错误呢?
      

  3.   

    构造函数是在当类被实例化的时候才会执行,所以编译的时候没有初始化i,所以报错,因为用final staic修饰后要在类在被加载进内存的时候就初始化。
    具体看书,书上详细。
      

  4.   

    FinalExample example =new FinalExample(1); //只能初始化一次
    example.i=10; //这次不能再对他的值进行修改了
      

  5.   


    final成员变量,要么在初始化时候附值,要么在构造方法里附值!就这两种,两个地方都没有附值就出错了~呵呵