final变量可以接受函数参数值,让人非常奇怪???
 class Person{
    private final String name ;
    
    public Person(){
       name = "final";
    }    public Person(String name){
       this.name = name;
    }    public String getName(){
      return name;
    }
 } public class Test {
   public static void main(String[] args){
     Person p = new Person("LiLei");
     System.out.println(p.getName());
   }
 }

解决方案 »

  1.   

    当final字段申明时没有赋值,那么可以在构造函数中赋值。
      

  2.   

    final变量如果声明时没有默认值,可以在构造函数,代码块和static块中初始化.
      

  3.   

    在那里 赋值也好,只能 赋值一次over
      

  4.   

    因为你声明时并没有赋值,在你第一次给final变量赋值后,才不能再次赋值。
      

  5.   

    final变量定义的时候,可以先声明,而不给初值,这种变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。
      

  6.   

    final变量能赋值,但只能赋值一次
      

  7.   

    final可以被赋值一次 声明的时候没有初始化 可以在之后的构造函数中对它初始化
      

  8.   

    final是不能变的。只能是一次赋值。。就存起来了 。。
      

  9.   

    很简单吗,可能你对课本不熟吧!静态变量初始化的方法有两种:(1)定义时初始化,(2),也可以在构造函数方法中初始化。而你调用了含参数的构造函数就不会调用不含参数的构造函数故答案是:LiLei
      

  10.   


    补充一下,非static变量不能在static块中初始化