Java 基础
Java 基础
Section titled “Java 基础”本页整理 Java 基础中最常用、面试和开发中最常遇到的知识点,作为速查手册使用。
- JDK:推荐安装 JDK 17/21(Temurin 或 Corretto),配置好
JAVA_HOME环境变量 - IDE:IntelliJ IDEA(社区版免费),调试、重构、Maven 集成都很完善
- 构建工具:Maven 或 Gradle,参见 Maven 文档
验证安装:
java -versionjavac -version基本数据类型
Section titled “基本数据类型”| 类型 | 字节 | 默认值 | 说明 |
|---|---|---|---|
byte |
1 | 0 | 字节型,范围 -128 ~ 127 |
short |
2 | 0 | 短整型 |
int |
4 | 0 | 整型,最常用 |
long |
8 | 0L | 长整型,字面量加 L |
float |
4 | 0.0f | 单精度,字面量加 f |
double |
8 | 0.0 | 双精度,默认浮点类型 |
char |
2 | '\u0000' | 单个字符 |
boolean |
- | false | 布尔值 |
注意:金额计算不要使用 float/double,使用 BigDecimal。
集合主要分为两大接口体系:
- Collection:单列集合
List:有序可重复 ——ArrayList(常用)、LinkedListSet:无序不重复 ——HashSet、TreeSetQueue:队列 ——ArrayDeque、PriorityQueue
- Map:双列键值对 ——
HashMap(常用)、LinkedHashMap、TreeMap、ConcurrentHashMap
常用经验:
- 遍历
Map推荐用entrySet()或forEach,不要先keySet()再get(多一次哈希查找); - 多线程环境下使用
ConcurrentHashMap,不要用Collections.synchronizedMap包装HashMap; ArrayList随机访问快,LinkedList插入删除快,但实际开发中几乎都用ArrayList。
Throwable├── Error(JVM 级错误,如 OutOfMemoryError,程序无法处理)└── Exception ├── RuntimeException(非受检异常,如 NullPointerException) └── 其他 Exception(受检异常,必须 try-catch 或 throws)实践建议:
- 不要捕获
Exception后什么都不做(吞异常); - 业务异常建议自定义
BusinessException继承RuntimeException,配合全局异常处理器统一返回; - 资源释放使用 try-with-resources 语法。
泛型的作用是把类型检查提前到编译期,避免强制类型转换:
List<String> list = new ArrayList<>();list.add("hello");String s = list.get(0); // 无需强转常用通配符:
<? extends T>:上界通配符,只能读不能写(生产者,PECS原则中的 Producer Extends);<? super T>:下界通配符,能写读出来是 Object(消费者,Consumer Super)。
常用新特性(JDK 8+)
Section titled “常用新特性(JDK 8+)”// Lambda + Stream:集合处理List<String> names = users.stream() .filter(u -> u.getAge() >= 18) .map(User::getName) .sorted() .toList();
// Optional:避免空指针String city = Optional.ofNullable(user) .map(User::getAddress) .map(Address::getCity) .orElse("未知");
// 新时间 API(java.time)LocalDate today = LocalDate.now();LocalDateTime now = LocalDateTime.now();DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");