面试难点-java中创建和初始化对象的过程

例:

public class Person {
    private String name = "zs";

    public Person() {
        System.out.println("Person构造器");
        print();
    }

    public void print() {
        System.out.println("Person print方法: name = " + name);
    }
}


class Student extends Person {
    static {
        System.out.println("Student静态代码块");
    }

    private String name = "tom";

    {
        System.out.println("Student匿名代码块");
    }

    public Student() {
        System.out.println("Student构造器");
    }

    public void print() {
        System.out.println("student print方法: name = " + name);
    }

    public static void main(String[] args) {
        new Student();
    }
}



 以Student s=new Student();为例

该代码的运行结果是:

Student 静态代码块
Person 构造器
student print 方法 : name = null
Student 匿名代码块
Student 构造器

运行结果为什么是这样,就要学习接下来的过程。

java中创建和初始化对象的过程:

1.对student类进行类加载,同时初始化类中的静态属性并赋默认值,给静态方法分配内存空间

2.执行类中的静态代码块

3.堆中分配对象的内存空间,同时初始化对象的非静态属性并赋默认值,

4.执行Student的父类中的匿名代码块

5.调用Student的父类构造器

6.对Student的成员变量进行显性赋值

7.执行匿名代码块

8.执行构造器方法

9.=赋值操作,把对象内存地址赋值给变量s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值