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类
类什么时候被加载
- 创建对象实例时(new)
- 创建子类对象实例或加载子类时,父类也会被加载
- 调用类的静态成员时。
实例化对象时的调用顺序
单个类的调用顺序:
- 先调用静态属性和静态代码块。
- 再调用普通属性和普通代码块。
- 最后调用构造器。
属性和代码块的优先级是一样的,谁在前面先调用谁。
有继承关系的类的调用顺序:
- 调用父类的静态属性和静态代码块。
- 调用子类的静态属性和静态代码块。
- 调用父类的普通属性和普通代码块。
- 调用父类的构造器。
- 调用子类的普通属性和普通代码块。
- 调用子类的构造器。
总结就是先调用静态再调用非静态,先调用父类再调用子类。