0% found this document useful (0 votes)
3 views24 pages

Java

本文档详细介绍了 Java 编程中的继承、多态、接口、集合、常用类、IO 流、异常处理和网络编程。涵盖了类的继承、抽象类、接口的实现、集合的基本操作、常用工具类的功能,以及文件和网络的输入输出处理。还包括异常处理机制和自定义异常的创建,提供了丰富的代码示例以帮助理解。
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views24 pages

Java

本文档详细介绍了 Java 编程中的继承、多态、接口、集合、常用类、IO 流、异常处理和网络编程。涵盖了类的继承、抽象类、接口的实现、集合的基本操作、常用工具类的功能,以及文件和网络的输入输出处理。还包括异常处理机制和自定义异常的创建,提供了丰富的代码示例以帮助理解。
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

继承

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:接收响应。

You might also like