不太明白你的描述static final String  test ='1234';这个可以类名.直接调用的你说的编译中,我不太明白,你想搞明白的是什么,毕竟编译中发生的事不需要考虑那么多吧

解决方案 »

  1.   

    在构造函数未调用之前还没有值,当调用了
    public String test1(){
      String pa  = test2.test;
    }String pa才有值
      

  2.   

    基本类型和String类型,有个特殊的地方,final限定的常量在编译时会以值的形式替换到调用的地方。比如final int a = 5;
    int b = a + 6;
    编译的时候会把5替换到a+6这个表达式中,进而直接计算出结果。String也这样处理。
      

  3.   

    test2.test在编译的时候就有值了,但这里的String pa只有在调用了
     public String test1(){
       String pa  = test2.test;
     }
    才有值