news 2026/1/11 4:03:38

期末复习三

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
期末复习三

文章目录

  • 一 基础概念
    • 1 什么是方法重写
    • 2 什么是接口接口?
    • 3 什么是抽象类?什么是抽象方法?
    • 4常见异常类及继承关系
      • Java异常体系完整对比表
    • 5常用API类整理(表格)
      • 一、字符串相关类
      • 二、集合框架类
        • 2.1 List接口实现类
        • 2.2 Set接口实现类
        • 2.3 Map接口实现类
      • 三、输入输出类(I/O)
        • 3.1 字节流
        • 3.2 字符流
        • 3.3 其他I/O类
      • 四、日期时间类(Java 8+)
      • 五、数学工具类
      • 六、系统相关类
      • 七、包装类(Wrapper Classes)
      • 八、并发工具类(Java 5+)
    • 5 集合整理(List,ArrayList,LinkedList,Hashset,HashMap)
      • 一、Java主要集合类核心特性对比
      • 二、ArrayList vs LinkedList 详细对比
      • 三、HashSet vs HashMap 详细对比
    • 6 权限修饰符关键字
    • 7 instanceof关键字
  • 二、面向对象的三大特性
    • 1 封装(Encapsulation)
    • 2 继承(Inheritance)
    • 3 多态(Polymorphism)

一 基础概念

1 什么是方法重写

在Java中,方法重写(Override) 是指子类重新定义父类中已有的方法,以提供特定的实现。这是实现运行时多态的关键机制。

2 什么是接口接口?

接口是Java中一种完全抽象的类,它定义了一组规范或契约,但不提供具体实现。接口指定了"做什么",而不关心"怎么做"。

3 什么是抽象类?什么是抽象方法?

抽象类(Abstract Class)
抽象类是不能被实例化的类,用于被其他类继承。它介于普通类和接口之间:
可以包含抽象方法(没有实现的方法)
也可以包含具体方法(有实现的方法)
可以有成员变量、构造方法、静态方法等

抽象方法(Abstract Method)
抽象方法是只有声明而没有实现的方法:
使用 abstract 关键字修饰
没有方法体(没有 {})
必须在抽象类或接口中声明
子类必须重写所有抽象方法(除非子类也是抽象类)

4常见异常类及继承关系

markdown

Java异常体系完整对比表

异常类别类名继承关系检查类型常见触发场景中文名称
顶级父类Throwable所有异常的根类-所有异常的超类可抛出的
错误ErrorThrowable → Error非检查异常严重系统错误,程序无法恢复错误
虚拟机错误VirtualMachineErrorError → VirtualMachineError非检查异常虚拟机内部错误虚拟机错误
内存错误OutOfMemoryErrorVirtualMachineError → OutOfMemoryError非检查异常堆内存耗尽内存溢出错误
栈错误StackOverflowErrorVirtualMachineError → StackOverflowError非检查异常方法调用栈溢出栈溢出错误
链接错误LinkageErrorError → LinkageError非检查异常类加载链接问题链接错误
类定义错误NoClassDefFoundErrorLinkageError → NoClassDefFoundError非检查异常编译时有类,运行时找不到类定义未找到错误
异常ExceptionThrowable → Exception-所有异常的超类异常
运行时异常RuntimeExceptionException → RuntimeException非检查异常编程错误,可避免运行时异常
空指针异常NullPointerExceptionRuntimeException → NullPointerException非检查异常调用null对象的方法或属性空指针异常
数组越界异常ArrayIndexOutOfBoundsExceptionRuntimeException → IndexOutOfBoundsException → …非检查异常访问不存在的数组索引数组索引越界异常
类型转换异常ClassCastExceptionRuntimeException → ClassCastException非检查异常错误的类型转换类转换异常
算术异常ArithmeticExceptionRuntimeException → ArithmeticException非检查异常除数为零等算术错误算术异常
参数异常IllegalArgumentExceptionRuntimeException → IllegalArgumentException非检查异常方法参数不合法非法参数异常
数字格式异常NumberFormatExceptionIllegalArgumentException → NumberFormatException非检查异常字符串转数字格式错误数字格式异常
状态异常IllegalStateExceptionRuntimeException → IllegalStateException非检查异常对象状态不正确非法状态异常
不支持操作异常UnsupportedOperationExceptionRuntimeException → UnsupportedOperationException非检查异常不支持的方法调用不支持的操作异常
受检异常Checked ExceptionException → [各种受检异常]检查异常外部因素导致,必须处理受检异常
IO异常IOExceptionException → IOException检查异常输入输出操作失败IO异常
文件未找到异常FileNotFoundExceptionIOException → FileNotFoundException检查异常文件不存在文件未找到异常
文件结束异常EOFExceptionIOException → EOFException检查异常读取到文件结尾文件结束异常
SQL异常SQLExceptionException → SQLException检查异常数据库操作失败SQL异常
类未找到异常ClassNotFoundExceptionException → ClassNotFoundException检查异常类加载时找不到类类未找到异常
中断异常InterruptedExceptionException → InterruptedException检查异常线程被中断中断异常
解析异常ParseExceptionException → ParseException检查异常解析字符串失败解析异常

5常用API类整理(表格)

一、字符串相关类

类名所在包主要用途特性常用方法
Stringjava.lang不可变字符串线程安全,不可变length(), charAt(), substring(), indexOf(), equals(), split(), replace()
StringBuilderjava.lang可变字符串非线程安全,性能高append(), insert(), delete(), reverse(), toString()
StringBufferjava.lang可变字符串线程安全,性能稍低同StringBuilder,但方法加synchronized
StringTokenizerjava.util字符串分割已过时,推荐用String.split()hasMoreTokens(), nextToken()

二、集合框架类

2.1 List接口实现类
类名特性使用场景时间复杂度
ArrayList基于数组,动态扩容随机访问频繁查/改: O(1),增/删: O(n)
LinkedList基于双向链表增删频繁,队列操作查: O(n),增/删: O(1)
Vector线程安全的ArrayList多线程环境(已过时)同ArrayList,但方法同步
CopyOnWriteArrayList写时复制,线程安全读多写少的并发场景写时复制整个数组
2.2 Set接口实现类
类名特性实现原理使用场景
HashSet无序,不重复基于HashMap快速去重,不关心顺序
LinkedHashSet按插入顺序基于LinkedHashMap需要保持插入顺序
TreeSet有序,可排序基于红黑树需要自然排序或自定义排序
2.3 Map接口实现类
类名特性实现原理使用场景
HashMap键值对,无序数组+链表/红黑树最常用的Map实现
LinkedHashMap按插入/访问顺序基于HashMap+双向链表需要保持顺序
TreeMap按键排序红黑树需要按键排序
Hashtable线程安全数组+链表(已过时)多线程(被ConcurrentHashMap替代)
ConcurrentHashMap线程安全,分段锁分段数组+链表/红黑树高并发场景

三、输入输出类(I/O)

3.1 字节流
类名用途父类常用方法
FileInputStream读取文件字节InputStreamread(), available(), close()
FileOutputStream写入文件字节OutputStreamwrite(), flush(), close()
BufferedInputStream缓冲字节输入流FilterInputStream提供缓冲功能
BufferedOutputStream缓冲字节输出流FilterOutputStream提供缓冲功能
3.2 字符流
类名用途父类常用方法
FileReader读取文件字符InputStreamReaderread(), ready(), close()
FileWriter写入文件字符OutputStreamWriterwrite(), flush(), close()
BufferedReader缓冲字符输入流ReaderreadLine(), read()
BufferedWriter缓冲字符输出流Writerwrite(), newLine(), flush()
3.3 其他I/O类
类名用途说明
File文件/目录操作创建、删除、重命名文件/目录
RandomAccessFile随机访问文件可读写任意位置
Scanner解析基本类型和字符串从输入流读取数据
PrintStream格式化输出System.out就是PrintStream

四、日期时间类(Java 8+)

类名用途不可变性
LocalDatejava.time日期(年月日)
LocalTimejava.time时间(时分秒)
LocalDateTimejava.time日期+时间
ZonedDateTimejava.time带时区的日期时间
Instantjava.time时间戳(1970-01-01至今)
Durationjava.time时间间隔(秒/纳秒)
Periodjava.time日期间隔(年/月/日)
DateTimeFormatterjava.time.format日期时间格式化

注意:旧版日期类(Date、Calendar、SimpleDateFormat)已过时,存在线程安全问题

五、数学工具类

类名主要用途常用方法/字段
Mathjava.lang数学运算abs(), sqrt(), pow(), random(), PI, E
Randomjava.util随机数生成nextInt(), nextDouble(), nextBoolean()
BigIntegerjava.math大整数运算add(), subtract(), multiply(), divide()
BigDecimaljava.math精确小数运算同上,解决浮点数精度问题

六、系统相关类

类名主要用途常用方法
Systemjava.lang系统级操作currentTimeMillis(), arraycopy(), getProperty(), exit()
Runtimejava.lang运行时环境freeMemory(), totalMemory(), exec()
Classjava.lang类信息getName(), getMethods(), newInstance()
ClassLoaderjava.lang类加载器loadClass(), getResource()

七、包装类(Wrapper Classes)

基本类型包装类缓存范围常用方法
byteByte-128~127parseByte(), valueOf()
shortShort-128~127parseShort(), valueOf()
intInteger-128~127parseInt(), valueOf(), toBinaryString()
longLong-128~127parseLong(), valueOf()
floatFloatparseFloat(), valueOf()
doubleDoubleparseDouble(), valueOf()
charCharacter0~127isDigit(), isLetter(), toUpperCase()
booleanBooleantrue/falseparseBoolean(), valueOf()

八、并发工具类(Java 5+)

类名主要用途
Threadjava.lang线程创建和管理
Runnablejava.lang线程任务接口
Callablejava.util.concurrent可返回结果的线程任务
ExecutorServicejava.util.concurrent线程池管理
ThreadPoolExecutorjava.util.concurrent线程池实现
Futurejava.util.concurrent异步计算结果
CountDownLatchjava.util.concurrent同步辅助类
Semaphorejava.util.concurrent信号量
ReentrantLockjava.util.concurrent.locks可重入锁

5 集合整理(List,ArrayList,LinkedList,Hashset,HashMap)

一、Java主要集合类核心特性对比

特性ArrayListLinkedListHashSetHashMapList接口
实现接口ListList, DequeSetMap集合接口
数据结构动态数组双向链表哈希表(基于HashMap)数组+链表/红黑树(JDK8+)抽象接口
是否有序插入顺序插入顺序无序无序(LinkedHashMap有序)有序
是否可重复Key不可重复,Value可重复
线程安全
增删效率低(需移动元素)高(直接修改指针)依赖实现类
查询效率高(下标访问O(1))低(遍历O(n))高(O(1))高(O(1))依赖实现类
内存占用连续内存,紧凑节点+指针,占用更高哈希表结构哈希表结构-
扩容机制初始容量10,1.5倍扩容无需扩容0.75负载因子触发扩容0.75负载因子触发扩容-
null值处理允许允许允许一个nullKey/Value均允许null允许
主要用途随机访问频繁、读多写少频繁增删、队列/栈操作快速去重键值对存储、快速查找有序集合抽象定义

二、ArrayList vs LinkedList 详细对比

对比项ArrayListLinkedList
内部结构Object[] 动态数组Node节点(双向链表)
初始容量100(无初始容量)
随机访问O(1) - 通过索引直接访问O(n) - 需遍历链表定位
头部插入O(n) - 移动后续元素O(1) - 直接修改指针
尾部插入O(1)(均摊,扩容时O(n))O(1) - 直接修改尾指针
中间插入O(n) - 移动后续元素O(n) - 先遍历定位节点
内存占用仅存储元素,内存紧凑存储元素+前后指针,占用更高
适合场景读多写少、随机访问频繁写多读少、频繁增删操作

三、HashSet vs HashMap 详细对比

对比项HashSetHashMap
底层实现基于HashMap(仅存Key)数组+链表/红黑树(JDK8+)
存储内容仅存储Key(Value为固定占位符)存储Key-Value键值对
重复判断基于Key的equals()+hashCode()基于Key的equals()+hashCode()
遍历方式迭代器遍历所有KeyKeySet/Values/EntrySet遍历
默认容量16(同底层HashMap)16
负载因子0.75(同底层HashMap)0.75
哈希冲突依赖HashMap的链表/红黑树解决链表(长度>8转红黑树)解决
同步版本Collections.synchronizedSet()Collections.synchronizedMap()

6 权限修饰符关键字

Java四种访问权限修饰符对比

修饰符同类同包不同包子类不同包非子类作用范围
public公共的,所有地方可访问
protected受保护的,包内+子类可访问
(default)默认的,仅同包可访问(无修饰符)
private私有的,仅同类可访问

7 instanceof关键字

instanceof 是Java的一个二元运算符,用于检查对象是否是特定类的实例(或该类的子类/接口的实现类的实例)。

二、面向对象的三大特性

1 封装(Encapsulation)

封装(Encapsulation)
定义:将数据(属性)和行为(方法)包装在一起,隐藏内部实现细节,仅对外暴露必要的接口。
核心思想:数据隐藏:私有化属性
公开接口:提供getter/setter方法
保护数据完整性:通过方法控制数据访问

优点
安全性:防止数据被非法修改
易维护:修改内部实现不影响外部调用
模块化:代码组织更清晰

2 继承(Inheritance)

定义
子类继承父类的属性和方法,实现代码复用和层次化设计。
核心思想代码复用:子类自动拥有父类功能
扩展增强:子类可以添加新功能
方法重写:子类可以修改父类行为

优点
代码复用:减少重复代码
易于扩展:添加新功能方便
维护性好:公共代码在父类中维护

3 多态(Polymorphism)

它指同一个行为具有多种不同表现形式或形态的能力。具体来说:
多态是指:
同一个方法调用
作用于不同的对象
会产生不同的执行结果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/5 12:13:23

如何训练专属Embedding模型提升检索质量?

如何训练专属Embedding模型提升检索质量? 在构建智能问答系统时,你是否遇到过这样的情况:用户问“CRM工单怎么升级?”,系统却返回了“客户满意度调查流程”;或者提问“EHR系统登录失败怎么办”,…

作者头像 李华
网站建设 2026/1/5 10:48:14

新手必看:Vivado固化程序烧写硬件环境搭建

从零开始搞定FPGA程序固化:Vivado烧写实战全解析 你有没有遇到过这样的情况? 在Vivado里辛辛苦苦写完代码、综合实现、生成比特流,用JTAG下载到FPGA上功能一切正常。可一拔线、一断电——再上电,板子“瘫了”?LED不闪…

作者头像 李华
网站建设 2025/12/29 14:07:17

客户成功经理的得力助手:快速响应客户疑问

客户成功经理的得力助手:快速响应客户疑问 在客户成功团队的日常工作中,一个看似简单的问题却常常耗费大量时间:“我们上次是怎么给客户配置单点登录的?”“这个功能的 SLA 到底包含哪些场景?”面对不断迭代的产品文档…

作者头像 李华
网站建设 2026/1/10 6:23:13

高频段去耦电容阻抗特性:系统学习与应用

高频去耦电容的真相:为什么100nF比10μF更“能打”?你有没有遇到过这种情况——系统跑着跑着就复位,示波器一抓电源纹波,发现尖峰蹭蹭往上冲?换了更大容值的电容也没用,甚至更糟?别急&#xff0…

作者头像 李华
网站建设 2025/12/24 2:03:42

如何设置告警机制应对Anything-LLM性能瓶颈?

如何设置告警机制应对 Anything-LLM 性能瓶颈? 在企业级 AI 应用日益普及的今天,大语言模型(LLM)平台的稳定性已不再只是技术团队的内部议题,而是直接影响用户体验、业务连续性和数据安全的核心要素。Anything-LLM 作为…

作者头像 李华
网站建设 2025/12/25 7:54:27

PCB封装在高速信号传输中的优化策略深度剖析

高速信号时代,PCB封装如何成为性能瓶颈的“破局者”?在5G基站满负荷运行、AI训练集群昼夜不息、自动驾驶汽车实时处理海量传感器数据的今天,我们早已进入一个以高速信号传输为基石的技术纪元。主流接口如PCIe 6.0(112 Gbps PAM4&a…

作者头像 李华