继承
extends —— 类的继承 class Child extends Parent {
abstract —— 抽象类/方法 abstract void sound(); // 抽象方法(没有方法体)
implements —— 接口的实现 class Dog implements Animal {
super —— 调用父类方法或构造函数 [Link](); // 调用父类的方法
this —— 当前对象引用 [Link] = name; // 区分成员变量和参数
@Override —— 方法重写 @Override void work() {
protected —— 访问修饰符(继承相关)
多态
5. instanceof —— 类型检查(运行时判断对象真实类型)
Animal a = new Dog();
if (a instanceof Dog) {
[Link]("This is a Dog");
解释:
instanceof 用于判断某个对象是否为某个类(或其子类)的实例。
常和多态结合,避免强制类型转换错误。
final —— 阻止多态(方法不能被重写)、
class Animal {
final void sleep() {
[Link]("Animal sleeping");
接口
interface —— 定义接口 interface Animal {
implements —— 类实现接口 class Dog implements Animal {
static —— 接口静态方法
接口可以定义 static 方法,直接通过接口名调用。
实现类 不能重写 接口的静态方法。
interface MathUtil {
static int add(int a, int b) {
return a + b;
class Test {
public static void main(String[] args) {
int result = [Link](3, 5);
[Link](result); // 8
private —— 接口私有方法 private 方法只能在接口内部使用
extends —— 接口继承接口,一个接口可以 继承多个接口。
interface Pet extends Animal {
instanceof —— 判断对象是否实现接口 instanceof 可用于检查对象是否为某接口的实现类。
集合
Java 集合主要分为 Collection 接口(List、Set、Queue)和 Map 接口(键值对存储)。
1. add(E e) —— 添加元素
List<String> list = new ArrayList<>();
[Link]("Apple");
[Link]("Banana");
[Link](list); // [Apple, Banana]
👉 向集合中添加元素,List 可重复,Set 自动去重。
2. addAll(Collection c) —— 批量添加
List<String> list1 = new ArrayList<>();
[Link]("A");
[Link]("B");
List<String> list2 = new ArrayList<>();
[Link]("C");
[Link]("D");
[Link](list2);
[Link](list1); // [A, B, C, D]
👉 将另一个集合的所有元素添加进来。
3. remove(Object o) —— 删除元素
[Link]("Banana");
[Link](list); // [Apple]
👉 删除指定元素,若存在多个只删除第一个。
4. removeAll(Collection c) —— 批量删除
[Link](list2);
[Link](list1); // [A, B]
👉 删除集合中属于另一个集合的所有元素。
5. clear() —— 清空集合
[Link]();
[Link](list); // []
👉 删除集合中所有元素。
6. size() —— 获取元素个数
[Link]([Link]());
👉 返回集合的大小。
7. isEmpty() —— 判断是否为空
[Link]([Link]());
👉 如果集合为空返回 true。
8. contains(Object o) —— 判断是否包含
[Link]([Link]("Apple")); // true
👉 判断集合中是否存在某个元素。
9. iterator() —— 遍历集合
Iterator<String> it = [Link]();
while ([Link]()) {
[Link]([Link]());
👉 使用迭代器安全遍历集合(可避免并发修改异常)。
10. for-each —— 增强型循环遍历
for (String s : list) {
[Link](s);
👉 更简洁的遍历方式。
11. toArray() —— 转换为数组
String[] arr = [Link](new String[0]);
[Link]([Link](arr));
👉 将集合转换为数组。
12. [Link]() —— 排序(List 专用)
[Link](list);
[Link](list);
👉 使用工具类 Collections 对列表排序。
13. [Link](K,V) —— 添加/修改键值对
Map<Integer, String> map = new HashMap<>();
[Link](1, "One");
[Link](2, "Two");
[Link](map); // {1=One, 2=Two}
👉 put 新键 → 添加,已有键 → 覆盖。
14. [Link](K) —— 获取值
[Link]([Link](1)); // One
👉 根据 key 获取 value。
15. [Link](K) —— 删除键值对
[Link](2);
[Link](map); // {1=One}
👉 删除指定 key 对应的 entry。
16. [Link](K) / [Link](V)
[Link]([Link](1)); // true
[Link]([Link]("One")); // true
👉 判断是否包含某个 key 或 value。
17. keySet() / values() / entrySet() —— 遍历 Map
for (Integer key : [Link]()) {
[Link]("Key: " + key);
for (String value : [Link]()) {
[Link]("Value: " + value);
for ([Link]<Integer, String> entry : [Link]()) {
[Link]([Link]() + "=" + [Link]());
👉 keySet() 返回所有 key,values() 返回所有 value,entrySet() 返回键值对。
常用类
1. [Link] 数学工具类
[Link]([Link](-10)); // 10 绝对值
[Link]([Link](5, 9)); // 9 最大值
[Link]([Link](5, 9)); // 5 最小值
[Link]([Link](2, 3)); // 8.0 次方
[Link]([Link](16)); // 4.0 平方根
[Link]([Link]()); // [0,1) 随机数
👉 常用于数学运算。
2. [Link] 数组工具类
int[] arr = {3, 1, 4, 1, 5};
[Link](arr); // 排序
[Link]([Link](arr));// [1,1,3,4,5]
[Link]([Link](arr, 4)); // 3 二分查找
int[] copy = [Link](arr, 3); // 复制前 3 个
👉 专门用于操作数组(排序、查找、复制)。
3. [Link] 集合工具类
List<Integer> list = new ArrayList<>([Link](3, 1, 4, 1, 5));
[Link](list); // 排序
[Link](list); // 反转
[Link]([Link](list)); // 最大值
[Link]([Link](list)); // 最小值
[Link](list); // 打乱顺序
👉 常用于 List/Set/Map 集合操作。
4. [Link] 对象工具类
String s1 = null, s2 = "Hello";
[Link]([Link](s1)); // true
[Link]([Link](s2)); // true
[Link]([Link](s1, s2)); // false
[Link]([Link]("A", "B")); // 组合 hash
👉 常用于判空、比较、hash 计算。
5. [Link] 随机数
Random rand = new Random();
[Link]([Link](10)); // 0~9 随机整数
[Link]([Link]()); // [0,1) 随机小数
👉 可生成各种类型的随机数,比 [Link]() 更灵活。
6. [Link] 字符串处理
String str = " Hello World ";
[Link]([Link]()); // 长度
[Link]([Link]()); // 去掉首尾空格
[Link]([Link]()); // 转大写
[Link]([Link]()); // 转小写
[Link]([Link](0, 5)); // 截取
[Link]([Link]("World", "Java")); // 替换
[Link]([Link](" ")[1]); // 分割
👉 字符串处理必备。
7. [Link] / StringBuffer 拼接字符串
StringBuilder sb = new StringBuilder("Hello");
[Link](" Java");
[Link](5, " World");
[Link]([Link]()); // Hello World Java
👉 StringBuilder(单线程快) / StringBuffer(线程安全) 用于高效字符串拼接。
8. [Link] / LocalTime / LocalDateTime(Java 8+ 日期时间
API)
LocalDate date = [Link](); // 当前日期
LocalTime time = [Link](); // 当前时间
LocalDateTime dt = [Link](); // 当前日期时间
[Link]([Link](5)); // 加 5 天
[Link]([Link](2)); // 减 2 小时
[Link]([Link]()); // 获取年份
👉 新版日期时间 API,替代 Date/Calendar。
9. [Link] 与 [Link](旧版)
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd
HH:mm:ss");
[Link]([Link](now));
👉 旧版日期处理,格式化常用。
10. [Link] 控制台输入
Scanner sc = new Scanner([Link]);
[Link]("Enter name: ");
String name = [Link]();
[Link]("Hello " + name);
👉 用于控制台输入(字符串、数字等)。
io 流
File
构造方法
File file = new File("[Link]");
常用方法
方法 说明
exists() 判断文件或目录是否存在
createNewFile() 创建新文件
mkdir() /
创建单级 / 多级目录
mkdirs()
方法 说明
delete() 删除文件或目录
length() 获取文件大小(字节数)
getName() 获取文件名
getAbsolutePat
获取绝对路径
h()
2. 字节流(适合二进制数据:图片、音频、视频)
输入流:FileInputStream
FileInputStream fis = new FileInputStream("[Link]");
int data;
while ((data = [Link]()) != -1) {
[Link]((char)data);
[Link]();
read():读取一个字节,返回 -1 表示结束。
read(byte[] b):读取到字节数组,提高效率。
输出流:FileOutputStream
FileOutputStream fos = new FileOutputStream("[Link]");
[Link]("Hello IO".getBytes());
[Link]();
write(int b):写入单个字节。
write(byte[] b):写入字节数组。
3. 字符流(适合文本数据:txt、csv 等)
输入流:FileReader
FileReader fr = new FileReader("[Link]");
int ch;
while ((ch = [Link]()) != -1) {
[Link]((char)ch);
[Link]();
read():读取单个字符。
read(char[] cbuf):读取多个字符到数组。
输出流:FileWriter
FileWriter fw = new FileWriter("[Link]");
[Link]("你好,Java IO");
[Link]();
write(String str):写入字符串。
append(CharSequence csq):追加写入。
4. 缓冲流(提高读写效率)
BufferedReader / BufferedWriter
BufferedReader br = new BufferedReader(new FileReader("[Link]"));
String line;
while ((line = [Link]()) != null) {
[Link](line);
[Link]();
readLine():按行读取文本。
BufferedInputStream / BufferedOutputStream
BufferedInputStream bis = new BufferedInputStream(new
FileInputStream("[Link]"));
BufferedOutputStream bos = new BufferedOutputStream(new
FileOutputStream("[Link]"));
int b;
while ((b = [Link]()) != -1) {
[Link](b);
[Link]();
[Link]();
5. 打印流
PrintWriter
PrintWriter pw = new PrintWriter(new FileWriter("[Link]"));
[Link]("日志记录...");
[Link]();
[Link]();
println():打印并换行。
print():打印不换行。
6. 对象流(序列化与反序列化)
ObjectOutputStream
ObjectOutputStream oos = new ObjectOutputStream(new
FileOutputStream("[Link]"));
[Link](new String("Hello Object IO"));
[Link]();
ObjectInputStream
ObjectInputStream ois = new ObjectInputStream(new
FileInputStream("[Link]"));
String obj = (String) [Link]();
[Link](obj);
[Link]();
异常
1. try —— 捕获可能发生异常的代码块
try {
int result = 10 / 0; // 可能抛出异常
👉 作用:将可能抛出异常的语句放在 try 块中。
2. catch —— 处理异常
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
[Link]("除数不能为 0: " + [Link]());
👉 作用:捕获异常并进行处理。[Link]() 可以获取异常信息。
3. finally —— 无论是否异常都执行
try {
int[] arr = {1, 2};
[Link](arr[3]);
} catch (ArrayIndexOutOfBoundsException e) {
[Link]("数组越界!");
} finally {
[Link]("无论是否异常,都会执行");
👉 作用:释放资源(比如关闭文件、数据库连接等)。
4. throw —— 抛出异常对象
public void checkAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("年龄必须 >= 18");
👉 作用:在方法体中主动抛出异常。
5. throws —— 声明方法可能抛出的异常
public void readFile(String path) throws IOException {
FileReader fr = new FileReader(path);
👉 作用:告诉调用者这个方法可能会抛出 IOException,调用者必须处理。
6. 自定义异常类
// 定义异常
class MyException extends Exception {
public MyException(String msg) {
super(msg);
// 使用
public void test(int num) throws MyException {
if (num < 0) {
throw new MyException("数字不能小于 0");
}
👉 作用:可以根据业务需求自定义异常。
7. 多异常捕获
try {
String s = null;
[Link]([Link]());
} catch (NullPointerException | ArithmeticException e) {
[Link]("发生了异常:" + e);
网络编程
1. TCP 客户端:Socket
import [Link].*;
import [Link].*;
public class TcpClient {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("localhost", 8888); // 连接服务器
PrintWriter out = new PrintWriter([Link](), true);
BufferedReader in = new BufferedReader(new
InputStreamReader([Link]()));
[Link]("Hello Server"); // 发送消息
String response = [Link](); // 接收消息
[Link]("Server says: " + response);
[Link]();
[Link]();
[Link]();
Socket(host, port):创建客户端连接。
getOutputStream() / getInputStream():获取字节流,用于发送和接收数据。
2. TCP 服务器端:ServerSocket
import [Link].*;
import [Link].*;
public class TcpServer {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(8888); // 监听端口
[Link]("Server started...");
Socket client = [Link](); // 等待客户端连接
BufferedReader in = new BufferedReader(new
InputStreamReader([Link]()));
PrintWriter out = new PrintWriter([Link](), true);
String msg = [Link](); // 读取客户端消息
[Link]("Client says: " + msg);
[Link]("Hello Client"); // 回复客户端
[Link]();
[Link]();
[Link]();
[Link]();
ServerSocket(port):创建服务器端监听端口。
accept():阻塞等待客户端连接,返回 Socket。
3. UDP 客户端:DatagramSocket + DatagramPacket
import [Link].*;
public class UdpClient {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket();
String msg = "Hello UDP";
byte[] buffer = [Link]();
InetAddress address = [Link]("localhost");
DatagramPacket packet = new DatagramPacket(buffer, [Link],
address, 9999);
[Link](packet); // 发送数据
byte[] recvBuf = new byte[1024];
DatagramPacket recvPacket = new DatagramPacket(recvBuf,
[Link]);
[Link](recvPacket); // 接收数据
[Link]("Server says: " + new String([Link](),
0, [Link]()));
[Link]();
DatagramSocket():创建 UDP 套接字。
DatagramPacket:封装数据包和目标地址/端口。
UDP 是无连接的,不保证顺序与可靠性。
4. UDP 服务器端
import [Link].*;
public class UdpServer {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket(9999);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer,
[Link]);
[Link](packet); // 阻塞等待数据
String msg = new String([Link](), 0, [Link]());
[Link]("Client says: " + msg);
String reply = "Hello UDP Client";
byte[] sendBuf = [Link]();
DatagramPacket sendPacket = new DatagramPacket(sendBuf,
[Link], [Link](), [Link]());
[Link](sendPacket);
[Link]();
5. HTTP 请求(Java 11+ HttpClient)
import [Link].*;
import [Link];
public class HttpExample {
public static void main(String[] args) throws Exception {
HttpClient client = [Link]();
HttpRequest request = [Link]()
.uri([Link]("[Link]
.GET()
.build();
HttpResponse<String> response = [Link](request,
[Link]());
[Link]([Link]());
HttpClient:发送 HTTP 请求。
HttpRequest:构建请求。
HttpResponse:接收响应。
网络编程
1. TCP 客户端:Socket
import [Link].*;
import [Link].*;
public class TcpClient {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("localhost", 8888); // 连接服务器
PrintWriter out = new PrintWriter([Link](), true);
BufferedReader in = new BufferedReader(new
InputStreamReader([Link]()));
[Link]("Hello Server"); // 发送消息
String response = [Link](); // 接收消息
[Link]("Server says: " + response);
[Link]();
[Link]();
[Link]();
Socket(host, port):创建客户端连接。
getOutputStream() / getInputStream():获取字节流,用于发送和接收数据。
2. TCP 服务器端:ServerSocket
import [Link].*;
import [Link].*;
public class TcpServer {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(8888); // 监听端口
[Link]("Server started...");
Socket client = [Link](); // 等待客户端连接
BufferedReader in = new BufferedReader(new
InputStreamReader([Link]()));
PrintWriter out = new PrintWriter([Link](), true);
String msg = [Link](); // 读取客户端消息
[Link]("Client says: " + msg);
[Link]("Hello Client"); // 回复客户端
[Link]();
[Link]();
[Link]();
[Link]();
ServerSocket(port):创建服务器端监听端口。
accept():阻塞等待客户端连接,返回 Socket。
3. UDP 客户端:DatagramSocket + DatagramPacket
import [Link].*;
public class UdpClient {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket();
String msg = "Hello UDP";
byte[] buffer = [Link]();
InetAddress address = [Link]("localhost");
DatagramPacket packet = new DatagramPacket(buffer, [Link],
address, 9999);
[Link](packet); // 发送数据
byte[] recvBuf = new byte[1024];
DatagramPacket recvPacket = new DatagramPacket(recvBuf,
[Link]);
[Link](recvPacket); // 接收数据
[Link]("Server says: " + new String([Link](),
0, [Link]()));
[Link]();
DatagramSocket():创建 UDP 套接字。
DatagramPacket:封装数据包和目标地址/端口。
UDP 是无连接的,不保证顺序与可靠性。
4. UDP 服务器端
import [Link].*;
public class UdpServer {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket(9999);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer,
[Link]);
[Link](packet); // 阻塞等待数据
String msg = new String([Link](), 0, [Link]());
[Link]("Client says: " + msg);
String reply = "Hello UDP Client";
byte[] sendBuf = [Link]();
DatagramPacket sendPacket = new DatagramPacket(sendBuf,
[Link], [Link](), [Link]());
[Link](sendPacket);
[Link]();
5. HTTP 请求(Java 11+ HttpClient)
import [Link].*;
import [Link];
public class HttpExample {
public static void main(String[] args) throws Exception {
HttpClient client = [Link]();
HttpRequest request = [Link]()
.uri([Link]("[Link]
.GET()
.build();
HttpResponse<String> response = [Link](request,
[Link]());
[Link]([Link]());
HttpClient:发送 HTTP 请求。
HttpRequest:构建请求。
HttpResponse:接收响应。