java
文章平均质量分 73
fan0430
这个作者很懒,什么都没留下…
展开
-
Java 封装
在上面的例子中,`Person` 类封装了一个私有的 `age` 字段,并通过公共的 `setAge()` 和 `getAge()` 方法来访问和修改这个年龄。- **公共方法(Public Methods)**:通过公共的方法来间接访问私有字段,通常包括获取数据的方法(getter)和设置数据的方法(setter)。2. **访问控制**:通过公共的方法(getter和setter)来控制对数据的访问和修改,可以在方法中加入额外的逻辑以控制数据的有效性和安全性。// 尝试设置一个不合法的年龄。原创 2024-07-29 18:04:54 · 429 阅读 · 0 评论 -
Java 抽象类
在上面的示例中,`Animal` 类是抽象类,定义了 `makeSound()` 和 `getName()` 两个抽象方法,以及 `move()` 和 `sleep()` 两个具体方法。子类 `Dog` 和 `Cat` 分别继承 `Animal` 类,并实现了抽象方法 `makeSound()` 和 `getName()`。4. **用于类层次结构设计**:抽象类通常用于设计类的层次结构,尤其是在一组相关的类中,有一些方法的实现逻辑是相似的,但也有一些方法的实现可能不同。// 输出: Woof!原创 2024-07-29 18:03:55 · 274 阅读 · 0 评论 -
Java 多态
在上面的示例中,`Animal` 类有一个 `makeSound` 方法,而 `Dog` 和 `Cat` 类分别重写了 `makeSound` 方法。通过向上转型,`Animal` 类型的引用 `myDog` 和 `myCat` 分别指向 `Dog` 和 `Cat` 的对象。虽然 `myAnimal` 是 `Animal` 类型的引用,但由于实际引用的是 `Dog` 对象,因此调用 `makeSound` 方法时会执行 `Dog` 类中重写的方法。// 输出: Dog barks。原创 2024-07-24 16:32:06 · 247 阅读 · 0 评论 -
Java 重写(Override)与重载(Overload)
当用 `Animal` 类型的引用指向 `Dog` 对象时,调用 `makeSound` 方法时会执行 `Dog` 类中的重写方法,而不是 `Animal` 类中的原始方法。重写方法必须具有相同的方法签名(方法名、参数列表和返回类型都相同),并且访问权限不能比父类中的方法更严格(例如,如果父类方法是 `protected`,子类方法不能是 `private`)。在上面的示例中,`Calculator` 类中定义了多个 `add` 方法,它们在参数列表上有所不同,但方法名相同。- 方法名相同,参数列表不同。原创 2024-07-24 16:31:06 · 297 阅读 · 0 评论 -
Java 继承
Dog` 类从 `Animal` 类继承了 `name` 属性和 `eat()` 方法,并添加了自己的 `bark()` 方法。在 `main` 方法中,创建了 `Dog` 的实例 `myDog`,并调用了继承自父类的 `eat()` 方法和子类自己的 `bark()` 方法。- **子类(派生类)**:继承自父类,并可以添加新的属性和行为,或者修改父类的行为(通过方法重写)。- **子类拥有父类的成员变量和方法**:子类可以直接访问父类的非私有成员变量和方法。// 继承自父类的方法。原创 2024-07-18 22:31:01 · 338 阅读 · 0 评论 -
Java 继承
Dog` 类从 `Animal` 类继承了 `name` 属性和 `eat()` 方法,并添加了自己的 `bark()` 方法。在 `main` 方法中,创建了 `Dog` 的实例 `myDog`,并调用了继承自父类的 `eat()` 方法和子类自己的 `bark()` 方法。- **子类(派生类)**:继承自父类,并可以添加新的属性和行为,或者修改父类的行为(通过方法重写)。- **子类拥有父类的成员变量和方法**:子类可以直接访问父类的非私有成员变量和方法。// 继承自父类的方法。原创 2024-07-18 22:29:06 · 283 阅读 · 0 评论 -
Java 异常处理
在 Java 中,异常处理是一种机制,用于处理程序执行过程中可能出现的错误或异常情况,以保证程序能够正常运行或进行适当的处理。异常可以分为两种主要类型:**受检异常**(checked exception)和**未受检异常**(unchecked exception)。### 异常分类1. **受检异常(Checked Exception)**: - 受检异常是在编译时强制检查的异常,通常是由外部因素引起的,如文件不存在、网络连接问题等。 - 受检异常必须通过 `try-catch` 块或者在方原创 2024-07-17 22:50:13 · 484 阅读 · 0 评论 -
Java Scanner 类
Scanner` 类是 Java 中用于读取用户输入的方便工具,它可以从各种数据源(如标准输入流、文件、字符串等)中读取基本类型和字符串。`Scanner` 类在日常的 Java 开发中非常实用,特别是在需要与用户交互、从文件中读取数据或者进行简单的数据处理时,它能够简化输入流的操作,提高代码的可读性和易用性。- 使用 `Scanner` 类时要注意处理异常,如 `InputMismatchException`,特别是当用户输入的数据类型与程序预期的类型不匹配时。- **示例2:读取浮点数**原创 2024-07-17 21:58:45 · 336 阅读 · 0 评论 -
Java 流(Stream)、文件(File)和IO
在Java中,流(Stream)、文件(File)和I/O(Input/Output)是处理数据的核心概念。在Java中,I/O操作通常通过流来实现,可以是从文件、网络或其他数据源中读取数据,也可以将数据写入到文件或发送到网络。// 输出字节对应的字符。- **文件**是存储在文件系统中的数据单位,Java中的`File`类用于操作文件和目录。- **I/O**是程序与外部环境交换数据的过程,通过流来实现读取和写入操作。- **流**是Java中处理输入输出的抽象,分为字节流和字符流。原创 2024-07-16 15:31:09 · 528 阅读 · 0 评论 -
Java 方法
**返回类型**:方法执行后返回的数据类型,可以是基本数据类型、对象类型,甚至可以是 `void` 表示没有返回值。方法重载是指在同一个类中,方法名相同但参数列表不同的多个方法。// 输出:Sum: 8。- **参数列表**:方法可以接收的输入参数,可以是零个或多个,每个参数由类型和名称组成。- **返回值**:可选项,用于返回方法执行后的结果,必须与方法声明中的返回类型匹配。- **方法体**:方法的具体实现,包含一系列的语句来完成特定的功能。- **方法名**:方法的名称,遵循标识符的命名规则。原创 2024-07-16 15:26:19 · 229 阅读 · 0 评论 -
Java 正则表达式
2. **字符类**: 用方括号 `[]` 表示,例如 `[abc]` 匹配单个字符 `a`、`b` 或 `c`。4. **量词**: 指定匹配次数,例如 `*` 匹配零次或多次,`+` 匹配一次或多次,`?- `\w{2,4}`: 匹配邮箱地址中的顶级域名,如 `.com`、`.org` 等。3. **预定义字符类**: 如 `\d` 匹配任意数字,`\w` 匹配任意单词字符。5. **边界匹配符**: 如 `^` 表示行的开头,`$` 表示行的结尾。- `\\.`: 匹配邮箱地址中的点号 `.`。原创 2024-07-15 22:51:04 · 581 阅读 · 0 评论 -
Java 日期时间
java.time` 包是从 Java 8 开始引入的,设计用于解决旧的 `java.util.Date` 和 `java.util.Calendar` 类存在的问题,提供了更加清晰、易用和线程安全的 API。3. **LocalDateTime**: 表示日期和时间,例如 `2024-07-15T14:43:35`。1. **LocalDate**: 表示日期,例如 `2024-07-15`。2. **LocalTime**: 表示时间,例如 `14:43:35`。// 获取当前日期和时间。原创 2024-07-15 22:48:39 · 299 阅读 · 0 评论 -
Java 数组
2. **相同数据类型**:数组中的所有元素必须是相同类型,可以是基本数据类型(如 int、double)或对象类型(如 String、自定义类)。3. **连续的内存空间**:所有的数组元素在内存中是连续存储的,这也是数组访问速度快的原因。// 声明和初始化一个整数数组。原创 2024-07-14 17:17:51 · 407 阅读 · 0 评论 -
Java StringBuffer 和 StringBuilder 类
在Java中,`StringBuffer` 和 `StringBuilder` 类都用于操作字符串,但它们之间有一些重要的区别,主要在于线程安全性和性能方面的考虑。- **性能考虑**:在性能要求较高且不需要线程安全保证的情况下,`StringBuilder` 是更好的选择,因为它没有额外的同步开销。- **线程安全**:由于方法是同步的,多个线程可以安全地同时调用 `StringBuffer` 的方法。- **非线程安全**:`StringBuilder` 的方法不是同步的,不适合在多线程环境下使用。原创 2024-07-14 17:16:46 · 343 阅读 · 0 评论 -
Java String 类
`String substring(int beginIndex, int endIndex)`: 返回从指定开始索引到结束索引(不包括)的子字符串。- `String substring(int beginIndex)`: 返回从指定索引开始到字符串末尾的子字符串。// 输出 "ell"// 输出 "llo"- `String concat(String str)`: 将指定字符串连接到此字符串的末尾。- `int indexOf(String str)`: 返回指定字符串第一次出现的索引。原创 2024-07-13 10:11:31 · 691 阅读 · 0 评论 -
Java Character 类
`compare(char x, char y)`:比较两个字符的大小(按照 Unicode 值比较)。- `digit(char ch, int radix)`:将指定基数中的字符表示形式转换为整数值。- `isLetterOrDigit(char ch)`:判断字符是否是字母或数字。- `isWhitespace(char ch)`:判断字符是否是空白字符。- `charValue()`:返回 `Character` 对象的值。- `isDigit(char ch)`:判断字符是否是数字。原创 2024-07-13 10:10:25 · 509 阅读 · 0 评论 -
Java Number & Math 类
Number` 是一个抽象类,是所有数值类的超类,它包括了如下几个具体的子类:`Byte`、`Short`、`Integer`、`Long`、`Float` 和 `Double`。- **数学函数**:如 `sin()`, `cos()`, `tan()`, `sqrt()` 等,用于执行三角函数、平方根等数学运算。- **指数和对数函数**:如 `exp()`, `log()`, `pow()` 等,用于计算指数、对数和幂运算。- **compareTo() 方法**:用于比较两个数值对象的大小关系。原创 2024-07-12 17:43:05 · 331 阅读 · 0 评论 -
Java switch case 语句
在这个例子中,变量 `day` 的值为 `3`,`switch` 语句根据 `day` 的值匹配到 `case 3`,然后执行 `dayString = "Wednesday";- `break` 语句的作用是防止执行其他 `case` 分支或 `default` 分支,如果省略 `break`,则会继续执行后续的 `case` 分支,这在某些情况下可能有用,但通常需要小心使用以避免意外行为。根据表达式的值,`switch`语句会执行对应的 `case` 分支或者 `default` 分支。原创 2024-07-12 17:42:20 · 384 阅读 · 0 评论 -
Java 条件语句 - if...else
通过合理使用 `if`、`else if` 和 `else` 关键字,可以编写出逻辑清晰、结构紧凑的代码,提高程序的可读性和可维护性。在Java中,条件语句`if...else`允许根据条件的不同执行不同的代码块。`if`和`else if`中的条件按顺序逐一检查,直到找到第一个为真的条件为止。`if...else if...else`语句可以用于执行多个条件的判断,根据不同的条件执行不同的代码块。`if...else`语句用于执行两个不同的代码块,根据条件的真假分别执行。// 如果条件为真执行的代码块。原创 2024-07-10 10:35:10 · 430 阅读 · 0 评论 -
Java 循环结构 - for, while 及 do...while
Java中常见的循环结构包括`for`循环、`while`循环和`do...while`循环,它们各自适合不同的使用场景。- **循环条件**:在每次迭代结束时检查,如果为 true 则继续执行循环体,否则退出循环。- **循环条件**:在每次迭代开始时检查,如果为 true 则执行循环体,否则退出循环。- **循环条件**:在每次迭代开始时检查,若为 true 则执行循环体,否则退出循环。**示例:** 使用 `while` 循环计算 1 到 5 的和。- **迭代语句**:通常用于更新循环变量的值。原创 2024-07-10 10:34:05 · 299 阅读 · 0 评论 -
Java 运算符
**&&**: 逻辑与,当且仅当两个操作数都为 true 时结果才为 true。- **||**: 逻辑或,当任意一个操作数为 true 时结果即为 true。- **instanceof**: 判断一个对象是否是某个类的实例。// 等同于 num = num - 3;// 等同于 num = num * 2;// 等同于 num = num / 4;- **+**: 加法运算,也用于字符串连接。- **==**: 检查两个操作数是否相等。- **>>>**: 右移位运算(无符号)。原创 2024-07-09 09:24:53 · 627 阅读 · 0 评论 -
Java 修饰符
**synchronized**: 用于多线程并发控制,确保方法或代码块在同一时间只能被一个线程访问。- **final**: 表示最终状态,不能被继承(类)、不能被覆盖(方法)、不能被修改(变量)。- **default (no modifier)**: 只能被同一包内的类访问。- **abstract**: 用于抽象类和方法,没有实现,需要子类实现。- **protected**: 可以被同一包内的类及其子类访问。- **public**: 可以被任何其他类访问。// 可以被任何类访问。原创 2024-07-09 09:23:53 · 941 阅读 · 0 评论 -
Java 变量命名规则
变量名通常采用驼峰命名法(Camel Case),即第一个单词以小写字母开始,后续单词的首字母大写,如 `myVariableName`。在Java中,变量命名是一种重要的编码规范,良好的命名可以提高代码的可读性和维护性。- Java是区分大小写的,因此 `myVariable` 和 `MyVariable` 是两个不同的变量名。- 不能使用Java的关键字作为变量名,如 `int`, `class`, `public` 等。- 变量名可以包含字母、数字、美元符号 `$` 和下划线 `_`。原创 2024-07-07 22:17:05 · 471 阅读 · 0 评论 -
Java 变量类型
**double**:双精度浮点数,范围约为 4.9e-324 到 1.8e+308,默认的浮点数类型。- **整数类型**:用于存储整数值,包括 `byte`, `short`, `int`, `long`。- **布尔类型**:用于存储逻辑值,只能为 `true` 或 `false`,包括 `boolean`。- **浮点类型**:用于存储带小数点的数值,包括 `float` 和 `double`。// 数组类型的例子。- **short**:短整数类型,范围为 -32,768 到 32,767。原创 2024-07-07 22:16:06 · 418 阅读 · 0 评论 -
Java 基本数据类型
在Java中,基本数据类型用于存储简单的数据值,它们是语言内置的预定义类型,不是类或对象。- 范围为约 -9.2亿亿到 9.2亿亿(精确范围是 -2^63 到 2^63 - 1)- 范围为约 -2.1亿到 2.1亿(精确范围是 -2^31 到 2^31 - 1)- **整数类型**:`byte`, `short`, `int`, `long`- 必须在数字后面加上 `F` 或 `f` 表示是 float 类型。- **浮点类型**:`float`, `double`- **布尔类型**:`boolean`原创 2024-07-06 21:33:42 · 778 阅读 · 0 评论 -
Java 对象和类
`student1.displayDetails()` 和 `student2.displayDetails()` 调用了对象的 `displayDetails()` 方法来显示学生的详细信息。- 通过 `new Student("Alice", 20)` 和 `new Student("Bob", 22)` 创建了两个不同的学生对象。- `student1` 和 `student2` 是 `Student` 类的对象。- `name` 和 `age` 是类的成员变量,用于存储学生的姓名和年龄。原创 2024-07-06 21:32:47 · 495 阅读 · 0 评论 -
Java 注释
文档注释以 `/**` 开始,以 `*/` 结束,通常用于为类、方法、字段等提供详细的说明文档。文档注释支持特殊的标记,如 `@param`、`@return` 等,用于生成文档。- **文档注释**:用 `/** */` 包围,用于生成文档,并支持特殊标记以提供详细的文档说明。- **多行注释**:用 `/* */` 包围多行文本,用于大段注释或注释多行代码。多行注释以 `/*` 开始,以 `*/` 结束,用于注释多行代码或大段注释。- **单行注释**:用 `//` 开始,用于单行注释。原创 2024-07-05 22:58:39 · 611 阅读 · 0 评论 -
Java 基础语法
**基本数据类型**:包括整数类型(byte, short, int, long)、浮点数类型(float, double)、字符类型(char)、布尔类型(boolean)。控制流语句用于控制程序的执行流程,主要包括条件语句(if-else)、循环语句(for、while、do-while)、跳转语句(break、continue、return)。- **引用数据类型**:包括类(Class)、接口(Interface)、数组(Array)等。System.out.println("及格");原创 2024-07-05 22:57:34 · 362 阅读 · 0 评论 -
Java 开发环境配置
3. 在“系统变量”下点击“新建”,输入变量名 `JAVA_HOME`,变量值为 `C:\Program Files\Java\jdk-11.0.12`.- **Eclipse**:下载 Eclipse IDE for Java Developers 版本,解压缩并运行 `eclipse` 可执行文件。1. 安装 JDK 后,假设 JDK 安装在 `C:\Program Files\Java\jdk-11.0.12`.确保 `/usr/lib/jvm/jdk-11.0.12` 是你的 JDK 安装路径。原创 2024-07-04 22:34:19 · 335 阅读 · 0 评论 -
Java 开发环境配置
3. 在“系统变量”下点击“新建”,输入变量名 `JAVA_HOME`,变量值为 JDK 的安装路径,如 `C:\Program Files\Java\jdk1.8.0_261`。配置Java开发环境涉及几个主要步骤,包括安装Java Development Kit (JDK)、配置环境变量和选择集成开发环境(IDE)。替换 `JAVA_HOME` 和 `PATH` 的值为你的 JDK 安装路径。- **IntelliJ IDEA**:用户友好,提供丰富的插件和功能。原创 2024-07-03 21:55:49 · 331 阅读 · 0 评论