java的运行机制

Java程序的开发有三个步骤:编写代码,编译代码,运行代码。

编写程序

利用编辑器编写Java程序,即Java源文件代码(.java文件)

编译代码

利用编译器(javac)将源文件编译成字节码(.class文件)

运行代码

Java编译过的文件无法被计算机直接识别。要通过解释器,也叫Java虚拟机,即 JVM(Java virtual machine)来解释执行字节码文件。它可以拿到任何装有JVM的平台上运行,也就是所谓的跨平台。

JVM,JRE和JDK

JVM

JVM是一个虚拟的计算机,它和我们平时的计算机一样,具有指令集和存储区域,负责执行命令,还要管理数据、内存和寄存器。它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。

JRE

JRE是java程序的运行时环境,包含JVM和运行时所需要的核心类库;
核心类库: java已经写好的核心代码;

JDK

JDK: 是java程序开发工具包;包含JRE和开发人员使用的工具;
开发工具: 编译工具(javac.exe)和运行工具(java.exe);

如果我们只想运行一个开发好的java程序,只运需要装JRE就可以。如果是开发者,需要安装包含开发工具的JDK

java类

类什么时候被加载

  1. 创建对象实例时(new)
  2. 创建子类对象实例或加载子类时,父类也会被加载
  3. 调用类的静态成员时。

实例化对象时的调用顺序

单个类的调用顺序:

  1. 先调用静态属性和静态代码块。
  2. 再调用普通属性和普通代码块。
  3. 最后调用构造器。

属性和代码块的优先级是一样的,谁在前面先调用谁。

有继承关系的类的调用顺序:

  1. 调用父类的静态属性和静态代码块。
  2. 调用子类的静态属性和静态代码块。
  3. 调用父类的普通属性和普通代码块。
  4. 调用父类的构造器。
  5. 调用子类的普通属性和普通代码块。
  6. 调用子类的构造器。

总结就是先调用静态再调用非静态,先调用父类再调用子类。