前言 Java Development Kit (JDK) 8 是长期支持 (LTS) 版本,广泛用于企业级遗留系统维护、Android 旧版本开发、特定框架兼容性场景。虽然 Oracle 已停止 JDK 8 公开更新 (2019/01),但通过 Oracle 账号仍可下载最后公开版 (8u202/8u271 等),或改用 OpenJDK 8 社区构建 (Adoptium Temurin, Azul Zulu, Amazon Corretto, Microsoft Build of OpenJDK) 获得持续安全更新。本教程以 Oracle JDK 8u271 为例演示 Windows 10
什么是 JVM? Java Virtual Machine (JVM) 是 Java 程序的运行引擎。它将编译后的字节码转换为特定平台的本地机器指令并执行,屏蔽了底层操作系统与硬件差异。JVM 是 Java Runtime Environment (JRE) 的核心组件。与直接编译为机器码的语言不同,Java 编译器生成平台无关字节码,由 JVM 在运行时解释或即时编译 (JIT) 执行。 JVM 工作流程概览 Java 源代码 .java → javac 编译 → 字节码 .class 类加载子系统加载 .class 文件至方法区,完成验证、准备、解析、初始化 执行引擎解释执行字节码,热
什么是 Java? Java 是一种通用、基于类、面向对象的编程语言,设计目标是可移植、高性能、安全。它驱动着从移动应用、企业级服务器到科学超算、游戏主机的海量应用,通过在几乎所有硬件平台上运行的 Java 虚拟机(JVM)实现真正的跨平台能力。 Java 平台架构 Java Platform 是一套完整的开发与运行工具集,包含三大核心组件: JDK (Java Development Kit):开发工具包,含编译器 javac、调试器 jdb、打包工具 jar、文档生成 javadoc、性能分析 jvisualvm 等,以及完整的 JRE。 JVM (Java Virtual Machi
Java 命令行参数 命令行参数 允许在运行时向 Java 程序传递数据。启动程序时,在类名后直接输入参数,以空格分隔。 基础示例 class Main { public static void main(String[] args) { System.out.println(命令行参数:); for (String str : args) { System.out.println(str); } } } 编译并运行: javac Main.java java Main apple ball cat 输出
Java 包装类详解 Java 包装类将基本类型(int、char、float 等)转换为对应的对象表示。八种基本类型各有专属的包装类: 基本类型包装类 byteByte booleanBoolean charCharacter doubleDouble floatFloat intInteger longLong shortShort 基本类型转包装对象 使用 valueOf() 方法显式转换: 示例 1:基本类型转包装对象 class Main { public static void main(String[] args) { int a = 5;
Java File 类详解 java.io.File 类提供了与文件系统交互的编程接口,支持文件和目录的创建、读取、写入及删除等核心操作。虽然 java.nio.file API 功能更强大,但本指南专注于经典的 java.io 方式。 文件与目录基础 文件是存储数据的命名位置,例如 main.java 存放 Java 源代码。目录(文件夹)是容器,可包含文件和子目录。理解这两个概念是进行文件系统操作的基础。 创建 File 对象 首先导入类: import java.io.File; 然后使用路径名实例化: // 创建代表路径的 File 对象 File file = new File(
Java 泛型:构建可复用、类型安全的代码 本指南讲解 Java 泛型、如何编写泛型类和方法及其优势,配清晰示例。 Java 泛型让你编写一个类、接口或方法操作多种数据类型,同时保持编译期类型安全。 注意:泛型不适用于基本类型(int、float、char 等)。 Java 泛型类 声明类型参数可创建适用于任意对象类型的类。 示例:创建泛型类 class Main { public static void main(String[] args) { GenericsClass<Integer> intObj = new GenericsClass<&
掌握 Java Lambda 表达式 探索 Java Lambda 表达式、函数式接口、泛型与 Stream API,配清晰示例。 Java 8 引入 Lambda 表达式增强语言表达力,让开发者编写更简洁可读的代码。 深入前需理解函数式接口——Lambda 实现的基石。 什么是函数式接口? 函数式接口是仅包含一个抽象方法的 Java 接口。该单一方法定义接口用途。 java.lang 的 Runnable 是经典例子,仅暴露 run() 方法。 示例 1:定义函数式接口 import java.lang.FunctionalInterface; @FunctionalInterface p
Java 自动装箱与拆箱 探索 Java 如何在基本类型与包装对象间自动转换,通过实例演示该过程。 Java 自动装箱 – 从基本类型到包装对象 将基本类型值赋给包装类变量时,Java 编译器执行自动装箱创建对应包装对象。例如: int a = 56; // 自动装箱 Integer aObj = a; 自动装箱在泛型集合(仅接受对象)中特别有用,保持代码简洁且类型安全。 示例 1:ArrayList 中的自动装箱 import java.util.ArrayList; class Main { public static void main(String[] args) {
Java 类型转换 本指南揭秘 Java 类型转换,涵盖主要形式并配清晰示例。 深入前请确保理解 Java 数据类型。 类型转换 将一种数据类型(int、float、double 等)的值转换为另一种类型的过程称为类型转换。 Java 提供 13 种转换类型,本教程聚焦两大核心类别: 自动拓宽类型转换 强制收窄类型转换 完整列表见 Java 官方 类型转换 文档。 自动拓宽类型转换 自动拓宽类型转换中,Java 自动将较小基本类型提升为较大类型,无数据丢失。 示例:int 转 double class Main { public static void main(String[
掌握 Java Scanner Scanner 类位于 java.util,可从流、文件、字符串和控制台捕获输入。下面演示核心用法模式。 示例 1:读取整行文本 import java.util.Scanner; class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print(Enter your name: ); String name = input.nextLine();
掌握 Java PrintWriter PrintWriter 位于 java.io,用于将字符数据写入文本文件或其他输出流。继承 Writer,提供便捷格式化方法。 与其他 writer 不同,PrintWriter 自动将基本类型(int、float、char 等)转为文本再写入。且不抛 IOException,可用 checkError() 检测错误。 自动刷新是关键特性:启用后,每次调用 println() 或 printf() 强制缓冲区刷入底层流。 PrintWriter 工作原理 PrintWriter 向底层 Writer 或 OutputStream 写格式化文本。构造器接受
Java StringWriter 类 StringWriter 位于 java.io,继承抽象 Writer,允许开发者将字符数据写入可变字符串缓冲区。缓冲区按需扩容,后可通过 toString() 转为标准 String。 注意:Java 中字符串缓冲区表现为可变字符串,内容可修改。toString() 用于获取其当前值作为不可变 String。 创建 StringWriter 导入类: import java.io.StringWriter; 创建对象: // 默认缓冲区容量 StringWriter output = new StringWriter(); 预期大量数据可指定初始缓冲
Java StringReader 类 StringReader 位于 java.io,可从字符串读取字符数据。继承抽象类 Reader。 注意:StringReader 中指定字符串作为源,字符逐个读取。 创建 StringReader 导入 java.io.StringReader 后创建: // 创建 StringReader StringReader input = new StringReader(String data); 创建的 StringReader 从指定字符串 data 读取字符。 StringReader 方法 read() 方法 read() – 从字符串读取器
Java BufferedWriter BufferedWriter 位于 java.io,包装另一 Writer 提供高效字符输出。通过内存缓冲减少昂贵磁盘 I/O 操作。 BufferedWriter 工作原理 维护 8,192 字符默认内部缓冲区。写入数据时字符先存入缓冲区。缓冲区满或关闭 writer 时内容刷入底层流。此策略最小化磁盘写入次数,显著加快字符输出。 创建 BufferedWriter 导入类并包装 FileWriter(或任意 Writer): FileWriter file = new FileWriter(output.txt); BufferedWriter
Java BufferedReader 类 BufferedReader 位于 java.io,包装另一 Reader 提供高效字符输入。通过将数据分块读入内部缓冲区,最小化昂贵磁盘 I/O 操作。 BufferedReader 工作原理 内部维护 8,192 字符 默认缓冲区。读操作时从源文件获取一块字符存入缓冲区。后续读从缓冲区逐字符拉取,大幅减少磁盘访问次数,加速 I/O。 创建 BufferedReader 导入 java.io 中的类并包装任意 Reader 实现(如 FileReader): import java.io.FileReader; import java.io.Buf
掌握 Java FileWriter:写字符到文件完全教程 FileWriter 位于 java.io,是向文件写文本的直接工具。继承 OutputStreamWriter,默认用平台字符编码,除非显式设置。 创建 FileWriter 导入类: import java.io.FileWriter; 创建方式: 按文件名 FileWriter output = new FileWriter(output.txt); 按 File 对象 File file = new File(output.txt); FileWriter output = new FileWriter(file);
Java FileReader 类 FileReader 位于 java.io,从文件读取字符数据。继承 InputStreamReader,支持不同字符编码。 创建 FileReader 导入类: import java.io.FileReader; 1. 按文件名 FileReader input = new FileReader(path/to/file.txt); 打开指定文件的读取器。 2. 按 File 对象 File fileObj = new File(path/to/file.txt); FileReader input = new FileReader(fileObj);
Java OutputStreamWriter 类 OutputStreamWriter 位于 java.io,作为桥梁将字符数据转为字节数据。继承抽象 Writer,配合 FileOutputStream 等字节流工作。 因 Unicode 字符可能跨多字节,OutputStreamWriter 确保写入字节流时正确应用字符编码。 创建 OutputStreamWriter 导入必要类: import java.io.OutputStreamWriter; import java.io.FileOutputStream; import java.nio.charset.Charset; 实
Java InputStreamReader 详解 InputStreamReader 位于 java.io,将原始字节转为字符,是读取文本文件、网络流或任何字节源表示字符的关键桥梁。 继承抽象 Reader,连接字节流(如 FileInputStream)与字符流。 当字符需多字节表示(如 UTF-8、UTF-16 编码文本),InputStreamReader 将这些字节组合读取并产生正确字符。 创建 InputStreamReader 导入必要类: import java.io.InputStreamReader; 典型实例化用 FileInputStream 作为底层字节源: Fil
java