1. 了解 JavaJava 是什么Java 是一门编程语言。我们可以用它编写后端服务、桌面程序、工具软件等。Java 程序通常不会直接运行源代码而是分成两步Java 源代码.java ↓ 编译 Java 字节码.class ↓ 交给 JVM 执行 程序运行Java 的一个重要特点是跨平台。同一份 Java 字节码通常可以在 Windows、macOS 和 Linux 上运行前提是系统中安装了合适的 Java 运行环境。这就是常说的一次编译到处运行。当然不同系统的文件路径、字符集等仍然可能存在差异。“跨平台”不代表完全不需要考虑操作系统。Java 适合做什么Java 常用于Web 后端和企业应用微服务和分布式系统Android 相关开发大数据相关项目桌面程序和各种工具对于初学者来说学习 Java 还能帮助我们理解变量、流程控制、面向对象、异常处理等常见编程概念。Java SE 和 Jakarta EEJava SEJava SE 是 Java 的标准版也是学习 Java 的基础。它包含Java 基础语法面向对象字符串和数组集合文件读写网络编程多线程等基础功能我们目前学习的内容属于 Java SE。Jakarta EEJakarta EE 以前叫 Java EE主要用于开发大型 Web 应用和企业应用。初学阶段不需要深入了解它。先学好 Java SE之后再学习 Spring、Spring Boot 或 Jakarta EE 会更容易。2. Hello World我使用的是集成开发环境 IDEA。先创建一个名为HelloWorld.java的文件public class HelloWorld { public static void main(String[] args) { System.out.println(Hello world!); } }运行后会输出Hello world!程序结构先简单认识这段代码public class HelloWorld {这里声明了一个名为HelloWorld的类。可以暂时把类理解成程序的一个组成部分。Java 代码通常写在类里面。public static void main(String[] args) {这是main方法也就是程序的入口。运行这个程序时Java 会从这里开始执行。现阶段可以先记住它的固定写法后面学到方法、数组和static时再分别理解其中每个部分。System.out.println(Hello world!);这条语句会把内容输出到控制台。Java 中的大多数语句以分号;结尾。类名和文件名如果一个顶层类使用了public修饰文件名必须和类名一致并注意大小写。例如public class HelloWorld { }文件名必须是HelloWorld.java一个源文件中最多只能有一个public顶层类但可以有其他不使用public修饰的类public class HelloWorld { } class Test { }初学阶段建议一个源文件只写一个类这样更容易管理。main 方法中的 argsargs用于接收命令行参数。它只是一个变量名可以换成其他名字不过一般都按照习惯写成args。例如java HelloWorld Java Study此时args[0] // Java args[1] // Study暂时不使用命令行参数也没关系。IDEA 中的快捷写法IntelliJ IDEA 提供了一些代码模板输入main或psvm可以快速生成main方法输入sout可以快速生成输出语句这些是 IDEA 提供的快捷功能不属于 Java 语法。不使用 IDE 编译和运行先检查 JDK 是否已经安装java -version javac -version然后进入HelloWorld.java所在的目录。编译源文件javac HelloWorld.java如果代码没有错误当前目录会出现HelloWorld.class HelloWorld.java运行程序java HelloWorld注意运行时写类名即可不要写成java HelloWorld.class.java和.class.java文件保存我们编写的 Java 源代码.class文件保存编译后得到的 Java 字节码JVM 负责加载和执行字节码.class文件不是操作系统可以直接运行的程序它需要交给 JVM 执行。JDK、JVM 和 JRE这几个名称很容易混淆初学阶段可以这样理解JDKJava Development KitJDK 是 Java 开发工具包。编写和运行 Java 程序通常都需要安装它。JDK 中包含javac编译 Java 源文件java启动 Java 程序调试、打包等开发工具运行 Java 程序所需的组件JVMJava Virtual MachineJVM 是 Java 虚拟机负责加载和执行.class字节码文件。Java 能够跨平台很大程度上是因为不同操作系统都有对应的 JVM。JREJava Runtime EnvironmentJRE 是 Java 运行环境主要用于运行 Java 程序。过去JDK 和 JRE 经常作为两个独立概念介绍。现代 Java 通常直接安装 JDK即可不需要再单独安装 JRE。可以先简单记成JDK开发和运行 Java 程序 JVM实际执行 Java 字节码 JRE运行 Java 程序所需的环境一个源文件可能生成多个 class 文件如果一个源文件中有多个类编译后就可能出现多个.class文件public class HelloWorld { } class Test { }编译后可能得到HelloWorld.class Test.class内部类等语法也可能生成额外的.class文件。因此一个.java文件不一定只生成一个.class文件。IDEA 把 class 文件放在哪里使用 IDEA 运行程序时它也会先编译代码只是这个过程由 IDE 自动完成了。编译结果可能位于out/production如果项目使用 Maven 或 Gradle也可能位于其他目录。具体位置取决于项目配置。3. 注释、标识符和关键字注释注释是写给人看的说明编译器通常会忽略它们。Java 中常见的注释有三种。行注释//后面这一行的内容是注释// 输出一段文字 System.out.println(Hello);块注释块注释可以占用多行/* 这里是块注释 可以写多行内容 */块注释不能互相嵌套。文档注释文档注释使用/** ... */通常写在类、方法或字段前面/** * 程序入口。 * * param args 命令行参数 */ public static void main(String[] args) { System.out.println(Hello world!); }文档注释可以通过 Javadoc 工具生成程序说明文档。完整示例public class HelloWorld { /** * 程序入口。 * * param args 命令行参数 */ public static void main(String[] args) { System.out.println(Hello world!); // System.out.println(这行代码不会执行); /* System.out.println(这两行代码); System.out.println(也不会执行); */ } }注释应该解释代码为什么这样写而不是重复代码本身已经表达清楚的内容。标识符类名、方法名和变量名都属于标识符。例如int age 18;其中int是关键字age是变量名也是标识符18是整数值标识符需要遵守以下规则可以包含字母、数字、下划线_和美元符号$不能以数字开头不能使用 Java 关键字不能使用true、false和null区分大小写例如int age; // 合法 int userAge; // 合法 int _count; // 合法 int 2users; // 不合法不能以数字开头 int class; // 不合法class 是关键字Java 允许在标识符中使用中文但实际项目通常使用英文。虽然$可以出现在标识符中但普通代码中很少主动使用。命名风格除了语法规则Java 还有一些常见的命名习惯类型命名方式示例类名大驼峰HelloWorld、UserService方法名小驼峰getName、printMessage变量名小驼峰userName、studentAge常量大写字母和下划线MAX_SIZE包名全小写com.example.demo这些不是编译器强制要求的但遵守统一的命名习惯可以让代码更容易阅读。关键字关键字是 Java 预先规定的、具有特殊含义的单词。例如public class HelloWorld { private int age; }其中public、class、private和int都是关键字。关键字区分大小写不能作为类名、方法名或变量名。初学阶段先认识下面这些常用关键字即可类别常见关键字作用定义类型class、interface、enum定义类、接口和枚举访问控制public、protected、private控制访问范围数据类型int、long、double、char、boolean表示基本数据类型条件判断if、else、switch、case根据条件执行代码循环for、while、do重复执行代码跳转break、continue、return改变代码执行流程对象new、this、super创建或访问对象继承extends、implements表示继承或实现异常try、catch、finally、throw、throws处理异常常用修饰符static、final、abstract修饰类、方法或变量包package、import声明包和导入类型这里有几个容易混淆的地方。不写访问修饰符Java 中没有名为default的“默认访问修饰符”。如果类或成员前面没有写public、protected或private它通常只能被同一个包中的代码访问这叫包级访问权限。default关键字本身主要用于switch和接口默认方法。finalfinal用在不同位置时含义也不同修饰变量变量不能再次赋值修饰方法方法不能被子类重写修饰类类不能被继承初学阶段先记住“受到限制不能再改变”即可具体规则后面再学。voidvoid表示方法没有返回值public static void printMessage() { System.out.println(Hello); }它不是基本数据类型。基本数据类型Java 有 8 种基本数据类型类型简单说明byte较小的整数short短整数int常用整数long较大的整数float单精度小数double常用小数char单个字符booleantrue或false具体取值范围和使用方法会在变量与数据类型部分继续学习。保留字和字面量const和goto是 Java 的保留字目前没有实际用途但也不能用作标识符。从 Java 9 开始单独的下划线_也不能作为标识符int _ 1; // 不合法下面三个词不是关键字而是字面量字面量含义true布尔值真false布尔值假null空引用值初学阶段不需要背下所有关键字。随着后面的学习不断接触记忆会比一次性背表格更牢固。Java 文档学习时应尽量使用与 JDK 版本对应的文档。例如使用 JDK 21 时可以查阅https://docs.oracle.com/en/java/javase/21/docs/api/API 文档更像一本字典不需要从头阅读。遇到不熟悉的类或方法时再查询即可。
