在刚学习类和创建对象时,对其中的过程和先后顺序很模糊,后来认真研究了一下,做了个小结,希望能对大家有所帮助~~
class Person
{
String name;
int age;
Person(String name,int age)
{
this.name=name;
this.age=age;
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p=new Person("张三",28);
}
}
以我上面简写的一个小程序为例,大家知道 Person p=new Person("张三",28) 这句话都做了什么事情吗?
它是一个创建对象的语句,但其中有很多我们看不见的动作,归纳如下:
1.因为new用到了Person.class。所以会先找到Person.class文件并加载到内存中。
2.如果该类中有static代码块的话,先执行它,给Person.class类进行初始化。
3.在堆内存中开辟空间,分配内存地址。
4.在堆内存中建立对象的特有属性,并进行默认初始化。
5.对属性进行显示初始化。
6.如果有的话,对对象进行构造代码块初始化。
7.对对象进行对应的构造函数初始化。
8.将内存地址赋给栈内存中的p变量。
虽然是一句简单的语句,里面包含了很多的动作,我觉得弄清它是很有必要的~~ |
|