1. Java常用包速查表的设计初衷
作为Java开发者,我们每天都要和各种包打交道。但你是否遇到过这样的场景:在写代码时突然想不起某个常用类的全限定名,或者不确定某个功能应该用哪个包里的工具类?这就是我整理这份速查表的初衷。
这份速查表不是简单的API文档罗列,而是基于我十年Java开发经验,筛选出真正高频使用的核心包和类,按照实际开发场景分类整理。它特别适合以下情况:
- 快速查阅常用工具类的位置
- 面试前的核心知识点复习
- 新项目技术选型时的参考
- 解决特定问题时的工具查找
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Java基础核心包
2.1 java.lang包
这是Java最基础的包,无需显式导入即可使用。包含的核心类有:
- String:字符串处理
- System:系统级操作
- Math:数学运算
- 基本类型的包装类(Integer、Double等)
- Thread:多线程基础
注意:虽然java.lang自动导入,但在使用其子包(如java.lang.reflect)时仍需显式导入。
2.2 java.util包
这个包堪称Java的瑞士军刀,包含:
- 集合框架:ArrayList、HashMap等
- 日期时间:Date(旧版)、Calendar
- 随机数:Random
- 正则表达式:Pattern、Matcher
集合类的选择有讲究:
- 需要快速访问用ArrayList
- 频繁插入删除用LinkedList
- 需要键值对用HashMap
- 需要排序用TreeMap
3. IO与网络编程核心包
3.1 java.io包
处理输入输出的基础包:
- 字节流:InputStream/OutputStream
- 字符流:Reader/Writer
- 文件操作:File
实际开发中更推荐使用java.nio包,性能更好。
3.2 java.nio包
Java New IO,提供更高效的IO操作:
- Buffer:数据缓冲区
- Channel:新的IO通道
- Path:替代File的路径操作
3.3 java.net包
网络编程核心:
- URL:处理URL地址
- Socket:TCP网络通信
- HttpURLConnection:HTTP客户端
4. 并发编程核心包
4.1 java.util.concurrent包
现代Java并发编程的核心:
- ExecutorService:线程池
- ConcurrentHashMap:线程安全Map
- CountDownLatch:同步辅助类
- Future:异步计算结果
重要提示:直接使用Thread类创建线程已是过时做法,应该优先使用线程池。
4.2 java.util.concurrent.atomic包
原子操作类:
- AtomicInteger
- AtomicReference
- LongAdder(Java8新增,适合高并发计数)
5. 常用工具类包
5.1 org.apache.commons.lang3
Apache Commons Lang库中的实用工具:
- StringUtils:字符串处理
- ArrayUtils:数组操作
- RandomUtils:随机数生成
5.2 com.google.guava
Google的Java核心库:
- Preconditions:参数校验
- Joiner/Splitter:字符串拼接拆分
- Cache:本地缓存实现
6. 数据库相关核心包
6.1 java.sql包
JDBC基础:
- Connection:数据库连接
- Statement/PreparedStatement:SQL执行
- ResultSet:结果集
6.2 javax.sql包
扩展的JDBC功能:
- DataSource:更好的连接管理
- ConnectionPoolDataSource:连接池支持
7. 测试相关核心包
7.1 org.junit
JUnit测试框架:
- Test:标记测试方法
- Before/After:测试前后操作
- Assert:断言
7.2 org.mockito
Mock测试框架:
- Mockito.mock:创建mock对象
- Mockito.when:定义mock行为
- Mockito.verify:验证调用
8. 新版本Java新增核心包
8.1 java.time包(Java8)
现代日期时间API:
- LocalDate:日期
- LocalTime:时间
- DateTimeFormatter:格式化
8.2 java.util.stream包(Java8)
流式操作:
- Stream:流接口
- Collectors:流收集器
9. 实际开发中的包使用技巧
- 使用静态导入简化代码:
java复制import static java.util.Collections.*;
// 之后可以直接用emptyList()而不是Collections.emptyList()
- 注意包的版本兼容性:
- 使用第三方库时要检查版本
- 特别是Guava,不同版本API变化较大
- 包冲突解决:
- Maven中使用
mvn dependency:tree查看依赖树 - 排除冲突的传递依赖
- 自定义包命名规范:
- 公司域名倒写:com.company.project
- 按功能分层:controller/service/dao等
10. 高频面试题涉及的包
根据最新Java面试趋势,以下包和类出现频率最高:
- java.util.concurrent下的所有类
- java.util.Collections的工具方法
- java.lang.reflect反射相关
- java.util.stream流式API
- java.time日期时间处理
面试官常问的问题模式:
"HashMap和ConcurrentHashMap有什么区别?"
"Java8的Stream API有什么优点?"
"如何使用反射获取私有字段?"
11. 性能优化相关的核心包
11.1 java.lang.instrument
提供JVM级别的性能监控:
- 类加载监控
- 字节码增强
11.2 java.lang.management
JVM管理接口:
- MemoryMXBean:内存监控
- ThreadMXBean:线程监控
11.3 jdk.jfr
Java Flight Recorder:
- 记录JVM事件
- 性能分析
12. 安全相关核心包
12.1 java.security
基础安全功能:
- MessageDigest:消息摘要
- Signature:数字签名
12.2 javax.crypto
加密解密:
- Cipher:加密核心类
- KeyGenerator:密钥生成
13. 常用第三方库核心包
13.1 lombok
通过注解简化代码:
- @Data:自动生成getter/setter
- @Slf4j:自动生成日志对象
13.2 slf4j
日志门面:
- LoggerFactory:获取Logger
- 各种绑定实现(logback、log4j2)
14. 模块化开发核心包(Java9+)
14.1 java.module
模块系统:
- ModuleDescriptor:模块描述
- ModuleFinder:模块查找
14.2 jdk.compiler
Java编译器API:
- JavaCompiler:编译Java代码
- StandardJavaFileManager:文件管理
15. 异常处理核心类
15.1 java.lang.Exception
所有异常的基类:
- RuntimeException:运行时异常
- IOException:IO异常
15.2 java.util.logging
JDK自带日志:
- Logger:日志记录器
- Level:日志级别
16. 注解处理核心包
16.1 javax.annotation
基础注解:
- @Resource:资源注入
- @PostConstruct:初始化方法
16.2 javax.annotation.processing
注解处理器:
- AbstractProcessor:自定义处理器基类
- RoundEnvironment:处理环境
17. 函数式编程核心包
17.1 java.util.function(Java8+)
函数式接口:
- Function:接受一个参数的函数
- Predicate:断言
- Consumer:消费者
17.2 java.util.Optional(Java8+)
空值安全容器:
- ofNullable:创建Optional
- orElse:提供默认值
18. 国际化相关核心包
18.1 java.text
文本处理:
- NumberFormat:数字格式化
- DateFormat:日期格式化
18.2 java.util.Locale
地区信息:
- 语言和国家代码
- 资源包查找
19. 反射相关核心包
19.1 java.lang.reflect
反射核心:
- Class:类元信息
- Method:方法信息
- Field:字段信息
19.2 java.lang.ClassLoader
类加载器:
- 加载类字节码
- 自定义类加载逻辑
20. 动态代理核心包
20.1 java.lang.reflect.Proxy
JDK动态代理:
- newProxyInstance:创建代理
- InvocationHandler:调用处理器
20.2 net.sf.cglib
CGLIB动态代理:
- Enhancer:增强器
- MethodInterceptor:方法拦截器
21. 序列化相关核心包
21.1 java.io.Serializable
序列化标记接口:
- 实现该接口的类可序列化
- serialVersionUID:版本控制
21.2 java.io.Externalizable
更灵活的序列化:
- writeExternal:自定义序列化
- readExternal:自定义反序列化
22. XML处理核心包
22.1 javax.xml.parsers
XML解析:
- SAXParser:SAX解析器
- DocumentBuilder:DOM解析器
22.2 org.w3c.dom
DOM模型:
- Document:XML文档
- Element:XML元素
23. JSON处理核心包
23.1 com.fasterxml.jackson.databind
Jackson核心:
- ObjectMapper:对象映射
- JsonNode:JSON节点
23.2 com.google.gson
Gson库:
- Gson:主要类
- JsonElement:JSON元素
24. 常用设计模式实现包
24.1 java.util.Observable
观察者模式:
- 被观察者基类
- 配合Observer接口使用
24.2 java.util.Collections
工厂方法模式:
- unmodifiableList:创建不可变列表
- singletonList:创建单元素列表
25. 实用技巧与注意事项
- 使用IDE的自动导入功能时要注意:
- 避免导入不必要的类
- 注意区分同名类(如Date有java.util和java.sql两个版本)
- 大型项目中的包组织建议:
- 按功能模块分包
- 避免循环依赖
- 公共代码放在common包
- 性能敏感场景下的包选择:
- 优先使用java.util.concurrent而非synchronized
- 考虑使用java.nio而非java.io
- 对于集合操作,java.util.stream可能更高效
- 保持包的整洁:
- 定期检查未使用的导入
- 使用IDE的优化导入功能
- 避免一个类导入过多包
这份速查表是我多年Java开发经验的结晶,建议收藏并定期查阅。随着Java版本的更新,我也会持续维护更新这个列表。在实际开发中,最重要的是理解每个包的设计目的和适用场景,而不是死记硬背API。
