IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]构造函数到底是干什么的?

    wangshuxuncom发表于 2016-11-29 16:31:40
    love 0

            “构造函数到底是干什么的?”,构造函数是初始化已创建好的对象中成员变量的,而不是创建对象的,不是,绝对不是发火,对象在非静态代码块执行之前,在构造方法调用之前已经存在了,看下面代码:

    public class Student{
    	
    	int age;
    	String name="张三";
    	
    	//思考:在执行非静态代码块时对象已经创建好了,只是这时对象中的全局变量为默认值(比如age属性)或初始值(比如name属性);如果在执行该代码块前对象没有创建对象,this指向的为null,则this.age和this.name势必会出现空指针异常,但是从运行结果可以看到没有出错。
    	{
    		System.out.println("非静态代码块:"+this.age+"—"+this.name);//输出:非静态代码块:0—张三
    	}
    	
    	//思考:调用构造函数时对象已经创建好了,这时对象中的全局变量为依然为默认值(比如age属性)或初始值(比如name属性),构造函数调用后已创建好的对象中的成员变量的值重新进行了设定;如果调用构造函数时该对象不存在,否则this.age和this.name势必会出现空指针异常,但是从运行结果可以看到没有出错
    	public Student(int age, String name){
    		System.out.println("构造方法:"+this.age+"—"+this.name);//输出:构造方法:0—张三
    		this.age=age;
    		this.name = name;
    		System.out.println("构造方法:"+this.age+"—"+this.name);//输出:构造方法:12—李四
    	}
    	
    	public static void main(String[] args) {
    		new Student(12, "李四");
    	}
    }



沪ICP备19023445号-2号
友情链接