Java Math 类是开发者解决复杂计算的利器——从物理模拟到地理计算。本指南覆盖核心方法 abs()、round()、ceil()、floor()、min()、max() 并附实战代码示例。 java.lang.Math 关键常量: Math.E —— 2.718281828459045(自然对数底) Math.PI —— 3.141592653589793(圆周率) 方法描述参数 abs返回参数绝对值double, float, int, long round四舍五入到最近 int 或 longdouble 或 float ceil大于等于值的最小整数double floor小于
开关语句是日常电子设备常客——如灯开关控制台灯。Java 中 switch 扮演类似角色:评估单个值并仅执行匹配块。 什么是 Java switch-case? switch 是一种条件结构,将表达式与多个 case 标签测试。表达式匹配标签时,对应块运行直到 break 或 switch 结束。无标签匹配则执行 default 块。 下面简例将个位数字映射为单词。 class SwitchBoard { public static void main(String[] args) { int iSwitch = 4; switch (iSwitch) { case 0: System.out
处理 Java 集合时,for-each 循环提供简洁易读的替代方案,取代传统带索引的 for 循环。消除手动索引管理,减少样板代码与潜在 off-by-one 错误。 语法 for (DataType element : collection) { // 处理 element } 实战示例 下面用传统 for 循环与 for-each 循环遍历 String 数组,对比差异。 数组声明: String[] arrData = {Alpha, Beta, Gamma, Delta, Sigma}; 传统 for 循环 for (int i = 0; i < arrData.length; i
Java throws 关键字 Java 中 throws 关键字用于声明方法可能抛出一个或多个异常。显式列出潜在失败,向调用者发出信号:他们必须处理异常或继续传播,保持代码清晰可靠。 调用可抛出受检异常的库方法时,Java 强制你处理。通常会用 try-catch 包裹风险代码: import java.io.*; class File1 { public static void main(String[] args) { try { FileWriter file = new FileWriter(c:\\Data1.txt); file.write(Guru99); file.clos
什么是 Java 自定义异常? 自定义异常是扩展 java.lang.Exception(或为非受检场景扩展 RuntimeException)的用户定义类。创建自己的异常类型可表达领域特定错误条件,让错误处理更清晰,并向调用者提供更丰富上下文。 实践中很少需重写 Exception 所有方法。最常见定制是添加接受错误码、消息或底层原因的构造器。下面简例演示关键步骤。 示例:定义并抛出自定义异常 步骤 1 – 创建异常类 public class MyException extends Exception { private final int errorCode; public MyExc
什么是 Java 异常? Java 异常 是中断程序指令执行、破坏正常控制流的事件。它是封装方法内错误信息的对象,传递给运行时系统。Java 中异常主要标示标准控制流无法处理的各种错误条件。 本教程学习: 异常是什么 为什么异常重要 如何有效处理 try-catch 结构 Java 异常类层级 finally 块的作用 Java 错误分两大类: 编译时错误 运行时错误 编译时错误细分: 语法错误 语义错误 语法错误示例: 声明 int a; 正确,写 in a; 编译器报错。 同一作用域内声明 int a; 后再次声明 int a; 触发编译错误,构建时高亮显示。 运行时错误示例
什么是 Java 包? Java 包 是类、子包和接口的集合。它帮助将类组织成文件夹结构,便于查找和使用,更重要的是提高代码复用性。 每个包有唯一名称,将其类和接口组织进独立命名空间或名称组。 虽然同名接口和类不能出现在同一包,但可在不同包中出现,靠为每个包分配独立命名空间实现。 语法: package nameOfPackage; 以下视频演示创建包的步骤。 视频不可访问请点击此处 通过示例学习包。我们定义类和对象,稍后在包 p1 中编译执行。 如何创建包? 创建包步骤: 选择包名 在 Java 源文件首行写 package 命令 源文件包含想放入包的类、接口等 编译生成 Java
什么是 Java 构造器? 构造器 是在内存分配后立即初始化新创建对象的特殊方法。它将对象字段设为期望值,若省略则设为默认值。定义构造器是可选的;若无提供,编译器提供默认构造器,赋标准默认值: 数值基本类型(int、double 等) → 0 char → \0 对象引用 → null 本教程涵盖: 创建构造器的规则 构造器重载 构造器链 创建 Java 构造器的规则 构造器名称必须与类名完全一致。 不能有返回类型,甚至不能是 void。 示例 1 – 第一个构造器 步骤 1:将以下代码输入 Java 编辑器。 class Demo { int value1; in
什么是接口? 在 Java 中,接口定义类可实现的契约。接口中声明的所有方法默认是抽象的,即无方法体。接口不能直接实例化;它们仅描述行为。 接口不能持有实例变量,但可用 public static final 修饰符声明常量。 什么是抽象类? 抽象类是不能实例化的类,可同时包含抽象方法(无方法体)和具体方法(有实现)。至少需要一个抽象方法。 抽象类作为子类蓝图,子类必须实现父类定义的任何抽象方法。 与接口不同,抽象类可通过实例字段维护状态并提供默认行为。 为什么使用接口? 封装行为而不绑定特定实现。 启用运行时动态分派和多态。 通过将方法签名与继承层次分离促进松耦合。 允许类实现多个接口,提
什么是 Java 接口? Java 接口 是定义类契约的抽象类型。它可声明常量和抽象方法,但不能持有状态。所有方法隐式为 public 和 abstract,类可实现多个接口,提供所需行为。 声明接口 interface MyInterface { // 抽象方法 } 实现接口 class Dog implements Pet { // 实现 Pet 的方法 } 扩展接口 interface RidableAnimal extends Animal, Vehicle { // 额外抽象方法 } 为什么需要接口? 接口让你将 是什么 与 怎么做 分离。它们实现多态、促进松
什么是 Java 抽象? 在 Java 中,抽象仅暴露对象的本质特征,隐藏与用户无关的内部实现细节。它通过减少复杂度和工作量简化开发。抽象通过 抽象类、抽象方法 和 接口 实现,是 Java 面向对象设计的核心概念。 本教程你将学到: 什么是 抽象类 及其使用场景。 抽象方法 在定义契约中的作用。 演示抽象实际应用的具体代码示例。 抽象类如何实现多态和代码复用。 final 关键字在 Java 中的用途。 理解抽象类 抽象类 是不能直接实例化但可为相关子类定义公共基类的类。它可同时包含抽象方法(无方法体)和具体方法(完整实现)。抽象类的定义特征是至少声明一个抽象方法,或出于设计原因显式标记
什么是 Java 多态? 多态 是 Java 面向对象编程(OOP)的核心概念。当类通过继承关联时产生,允许单一接口代表不同底层形式。结果是方法调用可根据运行时实际对象类型调用不同实现。 就像智能手机可通过语音、短信、图片、邮件通信。目标——通信——相同,但每种模式行为不同。这就是生活中的多态。 你将学到 Java 多态定义 实战 OOP 示例 方法重写 重载 vs 重写 动态(运行时)多态 静态 vs 动态多态 super 关键字 OOP 中的 Java 多态示例 考虑基类 Account 提供 deposit() 和 withdraw()。两个子类 SavingsAccount 和 C
什么是继承? 继承 是核心面向对象概念,允许一个类获取另一个类的字段和方法。就像孩子继承父母特征。通过复用现有代码,继承实现 可复用性 并简化维护。 本指南涵盖: Java 继承类型 Java 继承工作原理 分步 Java 示例 super 关键字用法 真实 OOP 场景 继承类型 Java 支持多种继承模式,适应不同设计需求。 单继承 一个类扩展另一个类,形成简单父子关系。 类 B 扩展类 A。 多重继承 Java 本身不允许类扩展多个类,但理解该概念有助于使用接口。 类 C 扩展类 A 和类 B(概念图)。 多级继承 继承链可跨越多层:子类可作为另一个类的父类。 类 C
什么是栈内存? 在 Java 中,栈是一块连续内存区域,存放方法调用帧、局部变量和引用变量。每次方法调用,新帧压入栈顶。栈内存遵循后进先出(LIFO)原则,最近的调用最先在方法返回时弹出。 什么是堆内存? 堆是创建 Java 对象的区域。它保存所有类实例,以及可选的指向这些对象的引用变量。与栈不同,堆不绑定单个方法调用的生命周期,允许对象在创建它们的作用域之外持久存在。 Java 内存分配 Java 内存分配 指为程序数据预留虚拟内存的过程。变量声明时不分配内存,而是创建引用。使用 new 操作符时,JVM 在堆上为对象分配空间。 Java 将内存划分为四个不同区域以便高效管理: 堆 栈 代
在 Java 中,static 关键字出现在三个不同场景:静态变量、静态方法 和 静态代码块。每种在类及其实例的生命周期中扮演独特角色。 Java 静态变量 静态变量是类级别的字段,类首次加载时仅初始化一次。与实例变量不同,所有该类对象共享同一份静态变量副本。 仅存在一份副本,为所有实例共享。 可直接通过 类名.变量名 访问,无需创建对象。 在任何实例字段初始化前完成初始化。 语法: public static int count; Java 静态方法 静态方法属于类而非特定实例。无需创建对象即可调用,且只能访问静态数据。 可调用其他静态方法,但不能调用实例方法。 通过 类名.方法名()
什么是 Java 垃圾回收? Java 的垃圾收集器(GC)自动管理内存,开发者无需手动释放。当对象没有活引用时,GC 回收其堆空间,防止内存泄漏导致应用崩溃。 Java 中对象通过 new 在堆上创建。运行时跟踪引用;当最后一个引用消失,对象即符合回收条件。GC 定期在后台运行,让代码更简洁安全。 与 C 语言需调用 free() 不同,Java 消除了悬空指针和未定义行为风险,增强可靠性和安全性。 所有 Java 对象都位于内存的 堆 区域——GC 扫描的区域。 实战演示:观察 GC 动作 步骤 1 – 复制代码到编辑器: class Student { int a; in
Java 中的 this 关键字是什么? this 关键字是一个引用变量,指向当前对象实例。最常用于区分同名的实例变量与参数或局部变量。 this 在 Java 中的主要用途: 引用当前类的实例变量 调用同一类中的另一个构造器(构造器链) 将当前对象作为参数传递给方法或构造器 从方法返回当前实例 为什么 this 是必需的 考虑方法参数遮蔽实例变量的类: class Account { int a; int b; public void setData(int a, int b) { a = a; b = b; } p
什么是 Java 命令行参数? 在 Java 中,命令行参数 是启动程序时在终端或控制台中程序名之后提供的任意值。这些值以字符串形式被捕获,存放在 main 方法的 String[] args 参数中。 关键点 参数作为纯字符串传递,可提供任意文本。 参数数量无上限。 常用于在应用启动时注入配置数据(文件路径、标志、凭证等)。 args 数组按输入顺序保存值。 动手示例 编写如下 Java 类: class Demo { public static void main(String[] args) { System.out.println(第一个参数: + a
Java HashMap 综合指南 在 Java 中,HashMap 以键值对形式存储数据,支持通过唯一键快速检索值。与数组不同,键可以是任意对象(null 除外),Map 会自动处理哈希计算和冲突解决。 核心特性 将唯一键与值关联,支持 get() 和 put() 操作。 当请求的键不存在时抛出 NoSuchElementException。 存储对象引用;基本类型必须包装(如 Integer、Double)。 声明 HashMap HashMap<String, Object> map = new HashMap<String, Object>(); HashM
Java 中将数值字符串转为整数是常见任务,但处理不当易坑新手。下面给出两种最高频方法的清晰简练示例:Integer.parseInt() 与 Integer.valueOf()。两者完成相同转换,但返回类型与性能略有差异。 用 Integer.parseInt() 转整数 用 Integer.valueOf() 转整数 假设有表示数字的字符串: String strTest = 100; 直接对字符串做数值运算会编译报错,因 Java 视其为文本非数字: class StrConvert{ public static void main(String []args){ String s
java