“构造函数到底是干什么的?”,构造函数是初始化已创建好的对象中成员变量的,而不是创建对象的,不是,绝对不是,构造函数只是进一步为已创建的对象属性赋值对,使之更新“想象”中的对象,对象在非静态代码块执行之前,在构造方法调用之前已经存在了,看下面代码:
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, "李四"); } }
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。