码迷,mamicode.com
首页 > 其他好文 > 详细

构造器相关

时间:2016-03-21 00:12:28      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:

构造器相关

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!