编写一个类,包括一个字符串变量,在定义处将期初始化.另一个字符串变量由构建器初始化.说明这两种方法的区别?解决方法
编写一个类,包括一个字符串变量,在定义处将期初始化.另一个字符串变量由构建器初始化.说明这两种方法的区别?
编写一个类,包括一个字符串变量,在定义处将期初始化.另一个字符串变量由构建器初始化.说明这两种方法的区别?
------解决方案--------------------
public class Test{
private String a="aaaa";
private String b;
public Test(){
b="bbbbb";
}
}
创建Test对象时,会首先初始化a 和 b,a为“aaaa”,b此时为null,然后调用构造函数,将b赋值为bbbbb.
没有什么大的不通,执行顺序而已
------解决方案--------------------
编写一个类,包括一个字符串变量,在定义处将期初始化.另一个字符串变量由构建器初始化.说明这两种方法的区别?
------解决方案--------------------
public class Test{
private String a="aaaa";
private String b;
public Test(){
b="bbbbb";
}
}
创建Test对象时,会首先初始化a 和 b,a为“aaaa”,b此时为null,然后调用构造函数,将b赋值为bbbbb.
没有什么大的不通,执行顺序而已
------解决方案--------------------
- Java code
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"); } }
------解决方案--------------------
1\在定义处将期初始化.这是类加载的时候就初始化,比较占用系统资源
2、另一个字符串变量由构建器初始化.这叫做“lazy loading”,类实力化的时候才初始化,对系统资源占用少
------解决方案--------------------
最大的区别就是初始化顺序不一样。