Java 核心知识点总结(一)

Java 核心知识点总结

一、异常(Exception)

1. 基本概念

  • 异常:代表程序在运行过程中可能出现的问题。
  • Exception :包含运行时异常 和编译时异常(受检异常)。
  • try-catch:用于捕获并处理异常。
java 复制代码
try {
    // 可能抛出异常的代码
} catch (Exception e) {
    // 异常处理逻辑
}
  • 支持自定义异常,用于表达业务层面的错误信息。

2. 异常处理方案

方案 说明
层层上抛,最外层捕获 底层异常逐层向上抛出,在最外层统一捕获;记录完整异常信息,并向用户返回友好、可理解的提示
捕获后尝试修复 最外层捕获异常后,尝试自动修复或降级处理,保证程序尽可能继续运行

二、泛型(Generics)

1. 泛型类

java 复制代码
修饰符 class 类名<类型变量, 类型变量, ...> { }
  • 类型变量建议使用大写英文字母 ,常用:E、T、K、V 等。

2. 泛型接口

接口同样可以使用类型参数,写法与泛型类类似。

3. 泛型方法

java 复制代码
修饰符 <类型变量, 类型变量, ...> 返回值类型 方法名(形参列表) { }

4. 通配符 ?

  • ? 在使用泛型时代表任意类型。
  • E、T、K、V 用于定义 泛型;? 用于使用泛型时的通配。

5. 泛型上下限

写法 含义
? extends Car 上限 :? 能接收的必须是 Car 或其子类
? super Car 下限 :? 能接收的必须是 Car 或其父类

6. 泛型擦除

  • 泛型仅在编译阶段生效。
  • 编译完成后,泛型信息会被擦除,运行时不再保留具体类型参数。

三、并发修改异常(ConcurrentModificationException)

在遍历集合的同时进行增删操作,可能触发并发修改异常。

解决方案

  1. 普通 for 循环(支持索引的集合)

    • 每删除一个元素后执行 i--;
    • 或倒序遍历后再删除。
  2. 迭代器(Iterator)

    • 使用迭代器遍历,并调用迭代器提供的 remove() 方法删除元素。

注意

  • 增强 for 循环 (for-each)和 Lambda 遍历不能解决并发修改异常问题。
  • 它们只适合纯遍历,不适合在遍历时同时做增删操作。

四、ArrayList 与 LinkedList

ArrayList

特性 说明
底层结构 数组
默认容量 10
扩容规则 第一次增加元素时,扩容到 15
查询效率 高(随机访问快)
使用场景 使用最多,内存占用相对较小

LinkedList

特性 说明
底层结构 链表
增删效率 在已知位置增删较快
查询效率 相对较低(需按节点遍历)

对比小结

  • ArrayList:基于数组,查询快,适合读多写少的场景。
  • LinkedList:基于链表,适合频繁在头尾或已知节点位置增删的场景。
相关推荐
1024奇点7 小时前
【仓颉语言入门 · 第二篇 第 22 课】
开发语言·ide·开源
Warren2Lynch8 小时前
C4 模型详解:利用 Visual Paradigm 可视化软件架构的综合指南
开发语言·uml
天河归来8 小时前
第三方接口不稳定,如何让核心任务继续完成
java·大数据
Knight_AL8 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
FRing039 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
by209999 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
砚底藏山河9 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
IT召唤狮10 小时前
开源企业级零信任项目Pangolin,零信任能挡住PHP核弹漏洞吗?
开发语言·开源·php
知已难寻10 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
Rover Ramble10 小时前
C++ 用互斥锁实现读写锁
开发语言·c++