Java 核心知识点总结(一)

Java 核心知识点总结

一、异常(Exception)

1. 基本概念

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

2. 异常处理方案

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

二、泛型(Generics)

1. 泛型类

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

2. 泛型接口

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

3. 泛型方法

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

4. 通配符 ?

  • ? 在使用泛型时代表任意类型
  • ETKV 用于定义 泛型;? 用于使用泛型时的通配。

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:基于链表,适合频繁在头尾或已知节点位置增删的场景。
相关推荐
小羊没烦恼!2 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里2 天前
java中的继承和多态的区别
java
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕2 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码2 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖2 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时2 天前
01-06-A-JVM排查实战详解
java·jvm
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
vipxieliang2 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
C语言小火车2 天前
C/C++ 为什么需要编译器?
开发语言·c++