# 基本语法
## 不同分类
JDK:Java 开发包,提供编译、运行 Java 程序所需的各种工具和资源,包括 Java 编译器、Java 运行时环境,以及常用的 Java 类库等。
JRE:Java 运行环境,用于解释执行 Java 的字节码文件
JVM:Java 虚拟机,是 JRE 的一部分。负责解释执行字节码文件,是可运行 java 字节码文件的虚拟计算机
JDK 包含 JRE,JDK 和 JRE 中都包含 JVM。JDK 出了包含 jre 还包含一些常用开发工具和基础类库。JDK 用于开发。
JRE 用于运行 java 程序
JVM 是 java 编程语言的核心并且具有平台独立性。
# Java 的基本语法
# 方法格式
1 | 权限修饰符 返回值声明 方法名称{参数列表}{ |
# 权限修饰符
public
:说明:
public
修饰符可以应用于类、接口、方法和变量。访问权限:任何其他类都可以访问被
public
修饰的成员,不论这些类是否在同一个包内。示例:
1
2
3
4
5
6
7public class MyClass {
public int myPublicVar;
public void myPublicMethod() {
// 方法体
}
}
protected
:说明:
protected
修饰符可以应用于成员变量和方法,但不能用于类(除非用于内部类)。访问权限:被
protected
修饰的成员可以被同一个包内的类以及其他包中的子类访问。示例:
1
2
3
4
5
6
7public class MyClass {
protected int myProtectedVar;
protected void myProtectedMethod() {
// 方法体
}
}
default(无修饰符):
说明:如果没有显式地指定任何访问修饰符,则默认为包访问权限(也称为 “default”)。
访问权限:只有同一个包内的类可以访问被 default 修饰的成员,其他包内的类无法访问。
示例:
1
2
3
4
5
6
7class MyClass {
int myDefaultVar;
void myDefaultMethod() {
// 方法体
}
}
private:
说明:
private
修饰符可以应用于成员变量和方法,但不能用于类(除非用于内部类)。访问权限:被
private
修饰的成员只能在它所在的类内部访问,其他类不能访问。示例:
1
2
3
4
5
6
7class MyClass {
int myDefaultVar;
void myDefaultMethod() {
// 方法体
}
}
# 简介
# 1. 基本结构
Java 程序的基本结构包括包声明、导入语句、类声明和方法。
1 | package com.example; // 包声明 |
# 2. 注释
Java 有三种类型的注释:
1 | // 单行注释:适用于短的注释 |
# 3. 变量和数据类型
Java 中的变量分为基本数据类型和引用数据类型。
# 基本数据类型:
- 整数类型:
byte
(8 位),short
(16 位),int
(32 位),long
(64 位) - 浮点类型:
float
(32 位),double
(64 位) - 字符类型:
char
(16 位) - 布尔类型:
boolean
(true 或 false)
1 | int age = 25; |
# 引用数据类型:
- 类(包括字符串)、数组、接口等
1 | String greeting = "Hello, World!"; |
# 4. 运算符
Java 提供了丰富的运算符,包括:
# 算术运算符:
+
(加)-
(减)*
(乘)/
(除)%
(取余)
1 | int a = 10; |
# 关系运算符:
==
(等于)!=
(不等于)>
(大于)<
(小于)>=
(大于等于)<=
(小于等于)
1 | boolean isEqual = (a == b); // false |
# 逻辑运算符:
&&
(逻辑与)||
(逻辑或)!
(逻辑非)
1 | boolean andResult = (a > 0 && b > 0); // true |
# 5. 控制结构
# 条件语句:
用于根据条件执行不同的代码块。
1 | int score = 85; |
# 循环语句:
用于重复执行代码块。
1 | // for 循环 |
# 6. 数组
数组用于存储相同类型的多个值。
1 | int[] numbers = {1, 2, 3, 4, 5}; |
# 7. 方法
方法用于封装一段代码,使其可以被多次调用。
1 | public class Main { |
# 8. 面向对象编程 (OOP) 概念
# 类和对象:
类是对象的模板,对象是类的实例。
1 | public class Person { |
# 继承:
类可以继承其他类的属性和方法。
1 | public class Animal { |
# 多态:
多态允许对象以多种形式出现。
1 | public class Animal { |
# 9. 异常处理
Java 中的异常处理机制包括 try-catch-finally
块,用于处理程序运行时的异常。
1 | public class Main { |
# 10. 文件 I/O
Java 提供了丰富的文件 I/O 类来读写文件。
1 | import java.io.*; |
# 11. 枚举
枚举是一种特殊的类,用于定义常量集合。
1 | public class Main { |
# 12. 泛型
泛型允许在类、接口和方法中使用类型参数。
1 | import java.util.ArrayList; |
# 总结
这些基本语法和概念涵盖了 Java 编程的主要方面,包括变量、运算符、控制结构、数组、方法、面向对象编程、异常处理、文件 I/O、枚举和泛型。掌握这些内容将帮助你建立坚实的 Java 编程基础,能够编写、调试和维护 Java 应用程序。
# Assert 介绍
# org.assertj.core.api
库
# 通用断言 ( AbstractAssert
)
isEqualTo(Object expected)
: 断言对象等于预期值。isNotEqualTo(Object other)
: 断言对象不等于给定值。isNull()
: 断言对象为 null。isNotNull()
: 断言对象不为 null。isSameAs(Object expected)
: 断言对象与预期对象是同一个实例。isNotSameAs(Object other)
: 断言对象与给定对象不是同一个实例。isInstanceOf(Class<?> type)
: 断言对象是给定类型的实例。isNotInstanceOf(Class<?> type)
: 断言对象不是给定类型的实例。isInstanceOfAny(Class<?>... types)
: 断言对象是给定类型中的任意一种的实例。isNotInstanceOfAny(Class<?>... types)
: 断言对象不是给定类型中的任意一种的实例。
# 数值断言 ( AbstractComparableAssert
)
isGreaterThan(Comparable<?> other)
: 断言对象大于给定值。isLessThan(Comparable<?> other)
: 断言对象小于给定值。isGreaterThanOrEqualTo(Comparable<?> other)
: 断言对象大于或等于给定值。isLessThanOrEqualTo(Comparable<?> other)
: 断言对象小于或等于给定值。isBetween(Comparable<?> start, Comparable<?> end)
: 断言对象在给定范围内。
# 字符串断言 ( AbstractCharSequenceAssert
)
contains(CharSequence... values)
: 断言字符串包含给定值。doesNotContain(CharSequence... values)
: 断言字符串不包含给定值。startsWith(CharSequence prefix)
: 断言字符串以给定前缀开始。endsWith(CharSequence suffix)
: 断言字符串以给定后缀结束。matches(CharSequence regex)
: 断言字符串匹配给定正则表达式。doesNotMatch(CharSequence regex)
: 断言字符串不匹配给定正则表达式。
# 集合断言 ( AbstractIterableAssert
)
contains(T... values)
: 断言集合包含给定元素。doesNotContain(T... values)
: 断言集合不包含给定元素。containsExactly(T... values)
: 断言集合包含且仅包含给定元素,且顺序一致。containsExactlyInAnyOrder(T... values)
: 断言集合包含且仅包含给定元素,但顺序不必一致。containsAnyOf(T... values)
: 断言集合包含给定元素中的任意一个。isEmpty()
: 断言集合为空。isNotEmpty()
: 断言集合不为空。hasSize(int size)
: 断言集合大小为给定值。
# Map 断言 ( AbstractMapAssert
)
containsKey(K key)
: 断言映射包含给定键。doesNotContainKey(K key)
: 断言映射不包含给定键。containsValue(V value)
: 断言映射包含给定值。doesNotContainValue(V value)
: 断言映射不包含给定值。containsEntry(K key, V value)
: 断言映射包含给定键值对。doesNotContainEntry(K key, V value)
: 断言映射不包含给定键值对。hasSize(int size)
: 断言映射大小为给定值。
# 异常断言 ( AbstractThrowableAssert
)
hasMessage(String message)
: 断言异常信息为给定值。hasMessageContaining(String message)
: 断言异常信息包含给定值。hasCause(Throwable cause)
: 断言异常有给定原因。hasNoCause()
: 断言异常没有原因。
# 文件断言 ( AbstractFileAssert
)
exists()
: 断言文件存在。doesNotExist()
: 断言文件不存在。isFile()
: 断言是文件。isDirectory()
: 断言是目录。hasContent(String content)
: 断言文件内容为给定值。hasExtension(String extension)
: 断言文件扩展名为给定值。
# 日期时间断言 ( AbstractDateAssert
, AbstractLocalDateTimeAssert
, AbstractLocalTimeAssert
, AbstractZonedDateTimeAssert
)
isBefore(Date date)
: 断言日期早于给定日期。isAfter(Date date)
: 断言日期晚于给定日期。isEqualTo(Date date)
: 断言日期等于给定日期。isBetween(Date start, Date end)
: 断言日期在给定范围内。
# 其它常用断言
OptionalAssert
: 用于Optional
类型的断言。StreamAssert
: 用于Stream
类型的断言。FutureAssert
: 用于Future
类型的断言。