A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在刚学习类和创建对象时,对其中的过程和先后顺序很模糊,后来认真研究了一下,做了个小结,希望能对大家有所帮助~~
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变量。
虽然是一句简单的语句,里面包含了很多的动作,我觉得弄清它是很有必要的~~

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马