class Test{
String str = new String("abc");//定义时就初始化
}与class Test{
String str;
Test(){
str = new String("abc");//定义时不初始化而是在构造方法中初始化
}
}这两个类都是对str初始化,有什么不同的地方?

解决方案 »

  1.   

    以后有些类的构造方法是不做任何事的,对属性只有get/set方法,为了防止没有先调用set方法而直接调用get方法得null的时候,可以在实例化的时候就给它一个初始值吧
      

  2.   

    您的意思就是说:JAVA类的数据成员在定义的时候初始化仅仅是为了防止出现null的情况?
      

  3.   

    两种方式都是在创建对象时初始化str,区别在于执行顺序,要先执行第一种,然后才执行构造函数。
    public class aaaaa {
    private bbb b = new bbb();
    public class bbb
    {
    bbb()
    {
    System.out.println("111111111111111111");
    }
    } aaaaa()
    {
    System.out.println("22222222222222");
    }
    public static void main(String[] args)
    {
    aaaaa a = new aaaaa();
    }
    }
    输出结果
    111111111111111111
    22222222222222