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

  1. 加载 根据路径找到想对应的class文件 并将这个文件加载到Java虚拟机中(存储到方法区内)

类加载分为隐式类加载和显示类加载 隐式类加载是指在层程序使用new关键词创建的对象时, 会隐式的调用类的加载器把对应的类加载到JVM中. 显示类加载指的是通过直接调用class.forName() 方法把所需要的类加载到JVM中

  1. 检查: 检查类加载的class文件的正确性(文件格式检验 元数据验证 字节码验证 符号引用验证)

  2. 准备: 给类加载的静态变量分配内存空间并赋予初始默认值

  3. 解析: 虚拟机将常量池中的符号引用替换成直接引用得过程, 符号引用就可以理解为一个标识 而在直接引用就可以直接指向内存中的地址

  4. 初始化: 为静态变量和静态代码块指向初始化工作(执行静态代码块和静态变量)

什么时候会触发类加载(重点)

  1. 构造该类的实例的时候

  2. 调用该类的静态属性或方法的时候

  3. 使用子类时会触发父类的加载

经典题目

/**

  • 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 静态”);

}

}

public class Demo1{

public static void main(String[] args) {

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

new Two();

new Two();

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

}

}

结果:

开始

One 静态

Two 静态

One 实例

One 构造

### 回答1: 这两个处理器都是目前市面上比较常见的高性能处理器。其中,锐龙 R7 5800H 是 AMD 公司推出的一款移动处理器,而 i5-11300H 则是 Intel 公司推出的一款移动处理器。 从处理器性能的角度来看,锐龙 R7 5800H 在多线程性能方面表现出色,可以更好地处理多任务并行,而 i5-11300H 则在单线程性能方面表现较强,适合单个任务的处理。 此外,锐龙 R7 5800H 的功耗较高,可能导致发热电池寿命的问题,而 i5-11300H 的功耗相对较低,能够更好地保持电池续航时间稳定性。 因此,如果您需要处理多任务并行,可以考虑锐龙 R7 5800H;如果您更注重单个任务的性能,可以考虑 i5-11300H。当然,您还可以根据自己的具体需求使用场景进行选择。 ### 回答2: 锐龙R7-5800Hi5-11300H都是当今市场上非常受欢迎的高性能CPU,它们都能满足大多数用户的需求。但是,它们在性能特点上还是存在很大的差异。 首先,锐龙R7-5800H是一款采用7nm FinFET制程的八核心十六线程处理器,其主频为3.2GHz,最高主频可达4.4GHz。它还内置了AMD的集成显卡Vega 8,最高核心频率为2.1GHz。相比之下,i5-11300H是基于10nm SuperFin制程的四核八线程处理器,主频为3.1GHz,最高主频可达4.4GHz,但它不带集成显卡。 在性能方面,锐龙R7-5800H表现优异,特别是针对多线程任务。它的性能比i5-11300H优越,尤其是在处理多线程任务时。在游戏方面,R7-5800H的性能也要稍高于i5-11300H。但是,i5-11300H的单线程性能却要比R7-5800H更好,因此在执行单线程任务时,i5-11300H更具有优势。 在功耗方面,i5-11300H的TDP只有35W,相比之下,锐龙R7-5800H的TDP则高达45W。因此,从功耗的角度来看,i5-11300H更省电,适合用于移动设备,而R7-5800H则更适合台式机或大型游戏本。 最后,价格也是两者之间一个重要的因素。一般来说,i5-11300H的价格比R7-5800H要低得多,但是,当需要高性能处理器时,R7-5800H也是一个更好的选择。 综上所述,锐龙R7-5800Hi5-11300H都有自己的特点优势,具体应该根据用户的需求来选择。如果用户需要高性能处理器用于多线程任务或者游戏,那么R7-5800H是更好的选择。如果用户注重功耗轻便性,则应选择i5-11300H。 ### 回答3: 锐龙r7-5800h是AMD推出的一款处理器,而i5-11300h是Intel推出的一款处理器。这两款处理器都是针对笔记本电脑开发的。 首先来看锐龙r7-5800h。该处理器是基于7nm工艺制造的,具备8个物理核心16个线程,主频为3.2GHz,最大增强频率为4.4GHz。该处理器采用AMD的Zen 3架构,拥有32MB的L3缓存4MB的L2缓存。它还配备了Radeon Vega 8集成显卡,支持DDR4-3200MHz内存。总体来说,锐龙r7-5800h性能强劲,适合运行大型应用程序游戏。 然后是i5-11300h。该处理器也是基于10nm工艺制造的,具备4个物理核心8个线程,主频为3.1GHz,最大增强频率为4.4GHz。它采用了Intel的Tiger Lake架构,拥有12MB的L3缓存,但没有L2缓存。它配备了Intel Xe集成显卡,支持DDR4-3200MHz内存。总体来说,i5-11300h性能比较强,可以应对日常使用需求。 从性能方面来看,锐龙r7-5800h比i5-11300h更加强大。它有更多的核心线程,更大的缓存更好的集成显卡。但考虑到业务场景的不同,i5-11300h已经足够满足大多数人的日常需要。 总体来说,无论选择哪款处理器,都要考虑自己的使用需求笔记本电脑的其他配置,以获得更好的使用体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值