119-类加载和对象创建练习-【视频讲解】

1.1.1. 类加载顺序:

JVM要使用一个类,就会去内存中方法区找这个类;如果找到了,就直接使用;如果找不到,就去加载类;

1、JVM第一次要使用一个类的时候,去硬盘上找这个类的class文件;

2、JVM找到这个类的class文件后,加载到内存中的方法区;其中,非静态成员变量、构造函数和非静态一般函数都放到非静态区域;静态成员变量、静态函数都放到静态区域;

3、在方法区的静态区域,为类中的静态成员变量分配空间,赋默认值;

4、按照代码书写的顺序,从上往下,给静态成员变量赋值,同时执行静态代码块;

5、类加载完成;

 

3、4两步,属于类的初始化阶段;

 

1.1.2. 对象创建过程:

1、JVM执行时遇到new关键字,到堆内存中开辟对象空间;

2、在对象空间中,为类中的非静态成员变量赋默认值;

3、根据new关键字后面的代码,调用相应构造函数进栈执行;

(1) 构造函数进栈后,首先调用父类构造函数执行;

(2) 父类构造函数执行完毕出栈后,开始根据代码书写的顺序,从上往下,给对象空间中的变量赋值,同时执行构造代码块;

(3) 执行构造函数中书写的代码;

4、构造函数执行结束出栈,对象创建完成;

1.1.1. 练习

1、下面的代码编译运行有没有错误?如果没有,运行结果是什么?说明原因。

 

点击查看视频讲解

 

1

2

3

4

5

6

7

8

9

public class CodeTest {

    CodeTest(){

    System.out.println("我是构造函数");

    }

    static CodeTest ct = new CodeTest();

    public static void main(String[] args) {

    new CodeTest();

    }

}

2、下面的代码编译运行有没有错误?如果没有,运行结果是什么?说明原因。

 

1

2

3

4

5

6

7

8

public class CodeTest {

    CodeTest(){

    System.out.println("我是构造函数");

    }

    CodeTest ct = new CodeTest();

    public static void main(String[] args) {

    new CodeTest();

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值