编写一个类,包括一个字符串变量,在定义处将期初始化.另一个字符串变量由构建器初始化.说明这两种方法的区别?

解决方案 »

  1.   

    public class Test{
     private String a="aaaa";
     private String b;
      public Test(){
        b="bbbbb";
       }
    }
    创建Test对象时,会首先初始化a 和 b,a为“aaaa”,b此时为null,然后调用构造函数,将b赋值为bbbbb.没有什么大的不通,执行顺序而已
      

  2.   


    public class Test {    static private String staticName = "zhao";    private String name = "long";    private String code = null;    Test(String code) {
            this.code = code;//一般在这里给成员变量初始化是,是在带参数的构造方法里~无参构造方法里这么写没有意义,不如声明的时候初始化!但是他们两个先后顺序是不一样的!
        }    public static void main(String[] args) {
            new Test("hello");
        }
    }
      

  3.   

    1\在定义处将期初始化.这是类加载的时候就初始化,比较占用系统资源
    2、另一个字符串变量由构建器初始化.这叫做“lazy loading”,类实力化的时候才初始化,对系统资源占用少
      

  4.   

    JVM加载类的过程是  1加载  2连接  3初始化  
    两个变量一个是在加载时初始化, 一个实在初始化时初始化