构造器与类同名
java中不管对象也好,还是基本数据类型也好,你声明它的时候,它们都称为变量,在你使用变量前给变量进行赋值,这就是变量的初始值,因此叫变量初始化。
实例化是指对象的创建,一般是指通过 new 关键字(当然还有其他途径,比如反射),在堆中为对象分配内存,这就是实例化。
举个非常简单的例子,你知道飞机会飞,但飞机在你脑海里只是个概念,当真的把飞机制造出来,变成实实在在的,存在于物质世界(java中称内存)的东西时,你才能用它来飞。如果在物质世界(内存)中根本就不存在,那就无法使用。
因此,实例化可以说将概念(类),变成实际存在(内存中存在)的过程就称为实例化。
PersonDemo p=new PersonDemo("lisi",20);这句话都做了什么事情?
- 因为new用到了PersonDemo.class,所以会先找到PersonDemo.class文件并加载到内存中。
- 执行该类中的静态成员和static代码块,如果有的话,给persondemo.class类进行初始化。
- 在堆内存中开辟空间,分配内存地址。
- 在堆内存中建立对象的特有属性,并进行默认初始化。
- 对属性进行显示初始化。
- 对对象进行构造代码块初始化。
- 对对象进行对应的构造函数初始化。
- 将内存地址付给栈内存中的p变量。
理解构造器之前,首先要知道Java中为什么要引入构造器,以及它的作用。
假设我们每一次编写一个类都要执行一个initialize()方法,提醒你,在使用对象之前,应先调用initialize()方法进行初始化,
这就意味着每一用户都要去执行这个方法。
Java中引入构造器,保证每一个对象都得到初始化,Java在有能力操作对象之前,系统会自动调用相应的构造器,保证初始化的进行。