目录
Java 运行机制
高级语言运行机制
- 编译型语言
使用专门的编译器,将源码转成可被特定平台(操作系统)执行的机器码(包括机器指令和操作数),并包装成该平台可执行性程序的过程称为编译。
编译型语言程序通常运行效率较高,但因为被编译成特定平台上的机器码,通常无法移植到其他平台上运行;如果需要移植,需要针对特定平台进行修改。
如:C、C++ 等。
- 解释型语言
使用专门的解释器对源程序逐行解释成特定平台的机器码并执行。
每次执行解释型语言的程序都需要进行一次编译,因此运行效率通常较低,而且不能脱离解释器独立运行,但跨平台比较容易。
如:Ruby、Python 等。
Java 运行机制
Java 语言编写的程序需要经过先编译、后解释两个步骤。
编译步骤不会生成特定平台的机器码,而是生成一种与平台无关的字节码(就是 .class
文件)。
这种字节码不是可执行性的,必须使用 JVM 来解释执行。
可以认为:Java 语言既是编译型语言,也是解释型语言。
Java 编译器编译 Java 程序时,生成的是与平台无关的字节码,这些字节码只面向作为中间层的 JVM 。
只要为不同平台实现相应的虚拟机,编译后的 Java 字节码就可以在该平台上运行。
-
JVM Java 虚拟机(Java Virtual Machine)
-
JRE Java 运行时环境(Java RuntimeEnvironment),包含 JVM
-
JDK Java 开发工具集(Java SE Development Kit),包含 JRE
Java 基本开发步骤
- 编写代码
public class HelloWorld {
/**
* main 入口方法
*/
public static void main(String[] args){
System.out.println("Hello,World!!!");
}
}
如上,文件保存为 HelloWorld.java,文件名和 class 类名必须相同。
javac
编译
在 HelloWorld.java 文件路径下打开 dos 命令窗口,执行 javac HelloWorld.java
,生成 HelloWorld.class 字节码文件。
如果源文件中有中文,编译时可能存在编码问题,可以指定编码编译,javac HelloWorld.java -encoding UTF-8
。
javac
可以查看使用语法。
java
运行
执行 java HelloWorld
,在 JVM 上解释运行 HelloWorld.class 文件。
java
可以查看使用语法。
标识符
类、变量以及方法等的名字称为标识符。
命名规则
-
标识符只能包含字母(A-Z 或者 a-z)、数字、下划线(_)、美元符($),但不能以数字开头。
-
关键字和保留字不能用作标识符。
-
类名和接口名:首字母大写,其余小写。(大驼峰)
-
常量名:全部大写,单词间用下划线分隔。
-
变量名和方法名:第二个单词起,首字母大写,其余小写。(小驼峰)
关键字和保留字
关键字和保留字是对编译器有特殊意义的固定单词。
注释
注释是开发者编写的关于业务及逻辑的一些语句,不会被 JVM 执行,目的是为了后续更好地维护。
但注释不是越多越好,开发时尽可能语义化代码,即从代码的命名上就能理解。
注释分类
- 单行注释
// 单行注释,同一行内后续的内容不会执行
- 多行注释
/*
* 多行注释,范围内的内容不会执行
*/
- 文档注释
/**
* 文档注释,范围内的内容不会执行,可以添加 doc 注解,使用 javadoc 生成 API 文档
* 文档注释负责描述类、接口、方法、构造器、成员属性
*/
常见注释位置
- 类和接口
/**
* @author: andy
* @date: 18-01-05
* @version: 1.0.0
* @description: 生成 PDF 工具类
*/
public class PdfUtil {
}
- 方法
/**
* 生成 pdf 文件
* @param htmlContent 待生成 pdf 的 html 内容
* @param file 生成 pdf 文件地址
* @see PdfUtils#getFontPath()
* @return true 生成成功 false 生成失败
*/
public static boolean generatePdf(String htmlContent,File file){
...
return result;
}
- 常量
/**
* 地址
*/
public static final String URL = "www.baidu.com";
- 关键逻辑上
其他
-
Java 大小写敏感。
-
Java 语句以
;
结束。 -
源文件名和类名必须相同,如果源文件中定义了多个类,则必须和唯一的 public 类名相同。
-
所有 Java 应用程序由 public static void main(String[] args) 方法开始执行。