IDEA综合总结

IDEA 环境下 Java 核心知识点综合总结

以下内容聚焦 IDEA 开发场景,从核心概念、使用场景、核心区别、IDEA 实操要点四个维度,梳理 String、集合(List/Set/HashMap 等)、异常、线程、IO 流的核心知识点,兼顾理解与实战。

一、基础数据类型:String(字符串)

1. 核心概念

String 是 Java 中不可变字符序列(底层是 final char [],JDK9 后改为 byte []),属于引用类型,存于常量池(字符串常量)或堆(new String ())。

2. 核心特性(IDEA 实操可见)
  • 不可变性:修改字符串会生成新对象(如str += "a"实际创建新 String),IDEA 会提示String concatenation in loop(循环拼接建议用StringBuilder);
  • 常量池优化:String s1 = "abc"; String s2 = "abc",IDEA 调试时可见 s1/s2 指向同一常量池地址;
  • 常用方法:equals()(内容比较)、substring()split()trim()(IDEA 快捷键:Ctrl+P 可查看方法参数)。
3. 高频对比(IDEA 调试验证)
写法 内存位置 是否相等(==)
String s1 = "abc" 常量池 s1==s2 → true
String s2 = "abc" 常量池
String s3 = new String("abc") s1==s3 → false

二、集合框架(List/Set/Map)

1. 核心分类
接口 实现类 核心特性 IDEA 常用操作
List ArrayList 数组实现、查询快、增删慢、非线程安全 快捷键 Ctrl+D 复制元素、debug 看索引值
LinkedList 链表实现、增删快、查询慢、非线程安全 断点调试 addFirst ()/addLast ()
Set HashSet 哈希表实现、无序、无重复、非线程安全 IDEA 提示 "duplicate element"(重复元素)
TreeSet 红黑树实现、有序(自然排序)、无重复 调试 compareTo () 方法排序逻辑
Map HashMap 哈希表 + 红黑树(JDK8+)、无序、键唯一 快捷键 Alt+7 查看 Map 的 key/value 结构
TreeMap 红黑树实现、键有序、键唯一 调试 entrySet () 遍历有序键值对
2. 核心区别(高频考点)
  • List vs Set:List 允许重复元素、有索引;Set 无重复元素、无索引;
  • HashMap vs HashSet:HashSet 底层是 HashMap(value 固定为 PRESENT 常量);
  • 线程安全:上述实现类均非线程安全,线程安全可选Vector/Hashtable/ConcurrentHashMap(IDEA 会提示 Hashtable 过时,建议用 ConcurrentHashMap)。
3. IDEA 实操技巧
  • 快速遍历集合:输入for → 回车 → 选择集合变量,自动生成增强 for 循环;
  • 集合初始化:IDEA 支持List<String> list = List.of("a", "b")(JDK9+),自动提示不可变集合警告;
  • 调试集合:IDEA 的 Variables 面板可展开集合,查看 size、元素值、哈希值(HashMap)。

三、异常处理(throw/throws/try-catch-finally)

1. 核心概念
  • 异常:程序运行时的错误(如空指针、数组越界),分为RuntimeException(运行时异常,可捕获可不捕获)和CheckedException(编译时异常,必须处理);
  • 处理方式:捕获(try-catch)或声明抛出(throws)。
2. 核心关键字
关键字 作用 IDEA 实操要点
try 包裹可能抛出异常的代码块 IDEA 提示 "Unreachable code"(catch 后无异常的代码)
catch 捕获异常并处理 可多 catch(子类异常在前,父类在后,IDEA 会提示顺序错误)
finally 无论是否异常,最终执行(释放资源) IDEA 调试时可断点 finally,验证流 / 线程资源释放
throw 手动抛出单个异常对象(方法内) IDEA 提示 "Unhandled exception"(未处理的检查异常)
throws 声明方法可能抛出的异常(方法签名后) IDEA 自动补全 throws 后的异常类名
3. 典型示例(IDEA 可直接运行)

java

运行

复制代码
public class ExceptionDemo {
    // throws声明方法抛出异常
    public static void readFile() throws FileNotFoundException {
        // throw手动抛出异常
        if (!new File("test.txt").exists()) {
            throw new FileNotFoundException("文件不存在");
        }
    }

    public static void main(String[] args) {
        try {
            readFile();
        } catch (FileNotFoundException e) {
            // IDEA快捷键Ctrl+Alt+T快速包裹try-catch
            System.out.println("异常处理:" + e.getMessage());
        } finally {
            System.out.println("最终执行(释放IO流/关闭连接)");
        }
    }
}
4. IDEA 避坑提示
  • finally 中避免返回值:IDEA 会警告 "finally block does not complete normally"(finally 返回值会覆盖 try/catch 的返回值);
  • 空指针防护:IDEA 提示Possible null pointer access,建议用Objects.requireNonNull()
  • 异常链:IDEA 支持e.printStackTrace()(控制台打印堆栈),或自定义异常传递根因。

四、线程

1. 核心创建方式
  • 继承 Thread 类:class MyThread extends Thread { run() {} }
  • 实现 Runnable 接口:class MyRunnable implements Runnable { run() {} }
  • 实现 Callable 接口(有返回值、可抛异常):配合FutureTask使用。
2. 核心特性(IDEA 调试)
  • 线程状态:新建(NEW)→ 就绪(RUNNABLE)→ 运行(RUNNING)→ 阻塞(BLOCKED)→ 死亡(TERMINATED);IDEA 的 Debug 面板可查看线程状态;
  • 线程安全:共享资源需加锁(synchronized关键字),IDEA 提示 "Method may be called concurrently"(并发调用风险);
  • 常用方法:start()(启动线程)、sleep()(休眠)、join()(等待线程结束)、yield()(让步)。
3. IDEA 实操
  • 调试多线程:IDEA 的 Debug 窗口→Threads 面板,可切换线程、暂停 / 恢复单个线程;
  • 线程池:IDEA 提示Executors.newFixedThreadPool()(建议自定义线程池,避免 OOM),推荐ThreadPoolExecutor
  • 死锁排查:IDEA 的 Profiler→Threads→Detect Deadlock(检测死锁)。

五、IO 流

1. 核心分类
分类维度 类型 核心实现类 IDEA 实操
数据单位 字节流 InputStream/OutputStream 读写文件(如 FileInputStream)
字符流 Reader/Writer 读写文本(如 FileReader,IDEA 提示编码格式)
流向 输入流 InputStream/Reader 从文件 / 网络读数据
输出流 OutputStream/Writer 向文件 / 网络写数据
功能 节点流(基础) FileInputStream、FileReader 直接操作文件 / 终端
处理流(包装) BufferedInputStream、BufferedReader 缓冲加速,IDEA 提示关闭外层流即可
2. 核心用法(IDEA 模板)

java

运行

复制代码
// 字符流读取文本文件(try-with-resources自动关闭流,IDEA推荐)
try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}
3. IDEA 关键提示
  • 资源关闭:IDEA 提示 "Resource leak: 'br' is never closed",推荐用try-with-resources(JDK7+)自动关闭流;
  • 编码问题:FileReader 默认系统编码,IDEA 提示改用InputStreamReader指定编码(如 UTF-8);
  • NIO 替代:IDEA 提示传统 IO 效率低,推荐 NIO 的Path/Files类(JDK7+),如Files.readAllLines()

六、核心总结(IDEA 开发视角)

  1. String:不可变,优先用常量池,循环拼接用 StringBuilder;
  2. 集合:根据场景选实现类(查询用 ArrayList,增删用 LinkedList,去重用 HashSet,键值对用 HashMap),IDEA 调试重点看元素 / 状态;
  3. 异常:编译时异常必须处理(try-catch/throws),finally 释放资源,IDEA 规避空指针 / 资源泄漏;
  4. 线程:多线程调试用 IDEA 的 Threads 面板,线程安全加锁,优先用线程池;
  5. IO 流:优先用字符流读文本、字节流读二进制,try-with-resources 自动关流,注意编码和缓冲。
相关推荐
2301_818732069 小时前
前端调用控制层接口,进不去,报错415,类型不匹配
java·spring boot·spring·tomcat·intellij-idea
不倒翁玩偶17 小时前
IDEA导入新的SpringBoot项目没有启动按钮
java·spring boot·intellij-idea
Aric_Jones19 小时前
idea使用.env运行SpringBoot项目
java·spring boot·intellij-idea
我命由我1234520 小时前
Java 泛型 - Java 泛型通配符(上界通配符、下界通配符、无界通配符、PECS 原则)
java·开发语言·后端·java-ee·intellij-idea·idea·intellij idea
李少兄1 天前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
先跑起来再说1 天前
Git 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成
ide·git·后端·elasticsearch·golang·intellij-idea
golang学习记2 天前
IntelliJ IDEA 2025.3 重磅发布:K2 模式全面接管 Kotlin —— 告别 K1,性能飙升 40%!
java·kotlin·intellij-idea
昀贝2 天前
IDEA启动SpringBoot项目时报错:命令行过长
java·spring boot·intellij-idea
摇滚侠2 天前
在 SpringBoot 项目中,开发工具使用 IDEA,.idea 目录下的文件需要提交吗
java·spring boot·intellij-idea
努力学编程呀(๑•ี_เ•ี๑)3 天前
【在 IntelliJ IDEA 中切换项目 JDK 版本】
java·开发语言·intellij-idea