标签:
JVM在创建对象时为对象分配存储空间,并调用相应的构造器,确保在操作对象之前,对象已经被恰当的初始化了。
构造器的特点:
1.构造器名称必须和类名完全一致
2.构造器没有返回值,没有返回值和返回值为空(void)不同
对一个类,包含一个未初始化的的String引用,类对象初始化时,String的值是多少?如果是int或者Integer,那么值是多少?
public class Constructor { private String s; private int i; private Integer it; public Constructor() { } public static void main(String []args) { Constructor cons = new Constructor(); System.out.println("String引用类型初始化值为:"+ cons.s); System.out.println("int类型初始化值为:"+ cons.i); System.out.println("Integer类型初始化值为:"+ cons.it); } }
String引用类型初始化值为:null
int类型初始化值为:0
Integer类型初始化值为:null
经过代码实验可得:String引用初始化时被初始化为null;int类型初始化为0;Integer引用类型也被初始化为null
创建一个类,它包含一个定义时就被初始化了的String域,以及另一个通过构造器初始化的String,这两种方式有何差异?
public class Constructor02 { private String s1 = "init at definition"; private String s2; private Constructor02(String s2) { System.out.println("调用构造器之前s1的值为:" +s1); System.out.println("调用构造器之前s2的值为:" +this.s2); this.s2 = s2; System.out.println("调用构造器之后s1的值为:" +s1); System.out.println("调用构造器之后s2的值为:" +this.s2); } public static void main(String []args) { Constructor02 con = new Constructor02("init at constructor"); //System.out.println(); } }
调用构造器之前s1的值为:init at definition
调用构造器之前s2的值为:null
调用构造器之后s1的值为:init at definition
调用构造器之后s2的值为:init at constructor
通过以上代码的输出可以发现,定义的String类型比构造器的String类型更早初始化。
标签:
原文地址:http://www.cnblogs.com/jiejiecool/p/5300190.html