Java~类加载的基本过程-附带一道经典题目讲解

/**

  • Created with IntelliJ IDEA.

  • Description: If you don’t work hard, you will a loser.

  • User: Listen-Y.

  • Date: 2020-08-04

  • Time: 15:34

*/

class One {

public One() {

System.out.println(“One 构造”);

}

{

System.out.println(“One 实例”);

}

static {

System.out.println(“One 静态”);

}

}

class Two extends One {

public Two() {

System.out.println(“Two 构造”);

}

{

System.out.println(“Two 实例”);

}

static {

System.out.println(“Two 静态”);

}

}

public class Demo1 extends Two{

public static void main(String[] args) {

System.out.println(“开始”);

new Two();

new Two();

System.out.println(“结束”);

}

}

结果为:

One 静态

Two 静态

开始

One 实例

One 构造

Two 实例

Two 构造

One 实例

One 构造

Two 实例

Two 构造

结束

  • 分析:
  1. 代码从main方法开始执行 main方法是Demo的静态方法 就会触发Demo的类加载

  2. Two是Demo的父类 所以在加载Demo前会先加载Two 但是呢one又是Two的父类 就又会优先加载

  3. 加载One的静态代码块输出 One静态

  4. 加载Two的静态代码块 输出 Two静态

  5. Demo没有静态代码块了就会执行main方法的内容 输出 开始

  6. 在构造Two的实例的时候会先构造One的实例 就会先执行One的代码块和构造方法 然后才执行Two的代码块和构造方法 所以输出One实例 One构造 Two实例 Two构造

  7. 进行第二次构造Two的时候和第一次构造一样输出One实例 One构造 Two实例 Two构造

  8. 最后打印结束

  • 如果我们稍微改一下代码让Demo不继承Two会发生怎样的情况

/**

  • Created with IntelliJ IDEA.

  • Description: If you don’t work hard, you will a loser.

  • User: Listen-Y.

  • Date: 2020-08-04

  • Time: 15:34

*/

class One {

public One() {

System.out.println(“One 构造”);

}

{

System.out.println(“One 实例”);

}

static {

System.out.println(“One 静态”);

}

}

class Two extends One {

public Two() {

System.out.println(“Two 构造”);

}

{

System.out.println(“Two 实例”);

}

static {

System.out.println(“Two 静态”);

}

}

分享

首先分享一份学习大纲,内容较多,涵盖了互联网行业所有的流行以及核心技术,以截图形式分享:

(亿级流量性能调优实战+一线大厂分布式实战+架构师筑基必备技能+设计思想开源框架解读+性能直线提升架构技术+高效存储让项目性能起飞+分布式扩展到微服务架构…实在是太多了)

其次分享一些技术知识,以截图形式分享一部分:

Tomcat架构解析:

算法训练+高分宝典:

Spring Cloud+Docker微服务实战:

最后分享一波面试资料:

切莫死记硬背,小心面试官直接让你出门右拐

1000道互联网Java面试题:

Java高级架构面试知识整理:

aj-1719264901784)]

Spring Cloud+Docker微服务实战:

[外链图片转存中…(img-WoilnThS-1719264901785)]

最后分享一波面试资料:

切莫死记硬背,小心面试官直接让你出门右拐

1000道互联网Java面试题:

[外链图片转存中…(img-H3FmQqpp-1719264901785)]

Java高级架构面试知识整理:

[外链图片转存中…(img-vRsbbrqV-1719264901786)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值