S01-02 基础-IDEA
[TOC]
概述
IDE
IDE(Integrated Development Environment,集成开发环境):是一套为开发者提供 “一站式编程解决方案” 的软件套件,它将编程所需的各类工具(编辑、编译、调试、构建等)集成在一个统一的界面中,替代了传统 “文本编辑器 + 命令行工具” 的零散工作模式,核心目标是 提升开发效率、降低技术门槛。
IDE 的核心组成部分:
所有 IDE 都围绕 “编程全流程” 设计,核心模块包括:
代码编辑器:
- 语法高亮(区分关键字、变量、注释)
- 自动补全(代码提示、快捷键补全)
- 格式化(自动调整代码缩进、排版)
- 语法检查(实时标注语法错误) 写 Java 代码时,public class 自动高亮,输入 Sysout 自动补全为 System.out.println(),避免拼写错误。
编译器 / 解释器:
将源代码(如 .java 文件)转换为计算机可执行的字节码 / 机器码(如 .class 文件),并处理编译错误。 点击 “编译” 按钮,IDE 自动调用 javac 命令编译代码,若有语法错误(如少分号),直接在编辑器中标红提示。
调试器(Debugger):
- 断点调试(暂停程序运行)
- 单步执行(逐行查看代码执行过程)
- 变量监控(实时查看变量值变化)
- 调用栈分析(定位异常来源) 排查 Java 程序 bug 时,在关键行设置断点,运行后逐步执行,观察 i 变量是否符合预期,快速定位逻辑错误。
项目管理工具:
管理项目文件结构(如包、类、资源文件)、依赖(如 Jar 包)、构建脚本(如 Maven/Gradle)。 自动识别 Java 项目的 src/main/java 目录,管理 Spring Boot 项目的 pom.xml 依赖,一键下载所需 Jar 包。
运行 / 构建工具:
一键运行程序、打包项目(如生成 .jar/.war 文件)、部署到服务器(部分高级 IDE 支持)。 点击 “运行” 按钮,IDE 自动执行 java 命令启动程序;通过 Maven 插件一键打包为可部署的 Jar 包。
其他辅助工具:
- 版本控制集成(Git/SVN,提交代码、拉取分支)
- 插件市场(扩展功能,如数据库连接、AI 辅助编程)
- 终端集成(内置命令行,无需切换外部终端)
Java 开发主流 IDE:
- IntelliJ IDEA(推荐):智能提示极强、插件生态丰富、对 Java 新特性支持最快、整合 Spring 等框架友好 企业级 Java 开发(Spring Boot/Cloud)、中大型项目、追求高效开发的开发者(新手 / 资深都适用)
- Eclipse:开源免费、轻量级(可按需安装插件)、历史悠久、生态成熟 学习 Java 基础(如语法、面向对象)、小型项目、教育场景(高校教学常用)
- NetBeans:完全开源、对 Java SE/EE 支持全面、内置 GUI 设计工具
IDE VS 普通文本编辑器:
很多新手会混淆 “IDE” 和 “文本编辑器”(如记事本、Sublime Text、Notepad++),核心区别在于 “集成性”:
- 普通编辑器:仅提供代码编写功能(如语法高亮),需手动配置编译器、调试器、依赖管理工具(如 VS Code 需安装 Java 插件才能支持编译调试);
- IDE:开箱即用,无需额外配置核心工具,自带完整的开发闭环(编写 → 编译 → 调试 → 部署)。
IDE 的实际使用场景(以 Java 开发为例):
- 项目创建:通过 IDE 新建 “Java 项目”,自动生成标准目录结构(
src源码目录、resources资源目录)。 - 代码开发:利用自动补全、语法高亮快速编写
HelloWorld.java,IDE 实时检查语法错误。 - 调试程序:在循环逻辑处设置断点,运行后单步执行,观察变量
i的值变化,定位 “数组越界” 等 bug。 - 运行程序:点击「运行」按钮,IDE 自动编译代码并执行,控制台直接输出结果;
- 依赖管理:通过 IDE 集成的 Maven 工具,在
pom.xml中添加spring-boot-starter-web依赖,IDE 自动下载并导入项目。 - 版本控制:直接在 IDE 中提交代码到 Git 仓库,拉取远程分支,解决代码冲突。
- 打包部署:通过 Maven 插件一键打包为 Jar 包,甚至直接部署到 Tomcat 服务器。
Eclipse
Eclipse:最初由 IBM 公司开发(2001 年推出),现在由非盈利的「Eclipse 基金会」维护,它的核心定位是:
- 开源免费:无任何付费门槛,个人 / 企业使用都无需授权;
- 跨平台:支持 Windows、Mac、Linux 等主流操作系统,一次配置可在不同电脑上使用;
- 插件化架构:这是它最核心的特点 —— 基础版仅提供核心框架,通过安装插件可扩展支持 Java、C/C++、Python、Android、Web 开发等几乎所有主流开发场景。
Eclipse vs IntelliJ IDEA:
| 维度 | Eclipse | IntelliJ IDEA(社区版) |
|---|---|---|
| 成本 | 完全免费开源 | 免费(仅社区版),旗舰版付费 |
| 易用性 | 配置稍繁琐,需手动设置 | 开箱即用,智能提示更友好 |
| 硬件要求 | 低,低配电脑流畅 | 稍高,内存 8G 以上体验更好 |
| 框架适配 | 对 Spring Boot 支持一般 | 对 Spring Boot/Cloud 更友好 |
| 编码效率 | 编码效率中等,依赖手动操作较多 | 重构、补全、纠错功能提升 30%+ 效率 |
| 学习门槛 | 稍高(配置需要查教程) | 更低(智能补全减少出错) |
IDEA
IDEA(IntelliJ IDEA):是由捷克公司 JetBrains 开发的一款 跨平台、高智能的集成开发环境(IDE),核心定位是「为开发者提供高效、智能的全流程开发体验」。是目前 Java 开发领域的首选 IDE(没有之一),核心优势在于「极致的智能提示、开箱即用的配置、对主流框架的深度适配」。
关键版本:
IDEA 分为两个版本,核心差异在于功能范围和付费模式:
| 版本 | 核心特点 | 适用场景 |
|---|---|---|
| Community(社区版) | 完全免费、开源,包含 Java 开发核心功能(语法提示、调试、Maven 集成等) | Java 新手入门、学习基础语法 / 面向对象、开发简单 Java 项目(控制台、Swing 等) |
| Ultimate(旗舰版) | 付费(可试用 30 天),新增 Web 开发、数据库工具、框架深度支持(Spring/MyBatis 等) | 企业级 Java 开发(JavaWeb、微服务、分布式项目)、需要多语言(如 Kotlin/Scala)开发 |
IDEA 的核心特点:
IDEA 的核心竞争力是「智能」和「高效」:
极致的智能提示(碾压级优势)
语法补全不止于关键字:
不仅能补全
public、class等关键字,还能智能识别变量类型、方法参数,例如:- 输入
list.时,自动提示add()、stream()等 List 类的方法,且标注参数类型(如add(E e)); - 输入
new ArrayList<>()时,自动补全泛型(如new ArrayList<String>())。
- 输入
代码意图预测:
能理解你的开发意图,例如:
- 写
for (int i = 0; i < list.size(); i++)时,自动提示简化为增强 for 循环(for (String s : list)); - 变量未定义时,直接提示「创建局部变量」「创建成员变量」,一键生成代码。
- 写
实时语法纠错:
比 Eclipse 更灵敏 —— 少写分号、变量未初始化、方法返回值遗漏等错误,实时标红并给出修复建议(如「添加分号」「初始化变量」),新手能快速规避低级错误。
开箱即用,零配置成本(新手友好)
- 无需手动配置 JDK、Maven/Gradle:新建 Java 项目时,自动识别本地 JDK 路径,默认集成 Maven 环境,无需像 Eclipse 那样手动设置「安装目录」「环境变量」。
- 标准项目结构自动生成:新建 Maven 项目时,自动创建
src/main/java(源码)、src/main/resources(资源文件)、src/test/java(测试代码)目录,符合 Java 开发规范,新手无需纠结目录结构。 - 框架模板一键生成:支持 Spring Boot、MyBatis 等框架的快速初始化 —— 通过「Spring Initializr」插件,勾选需要的依赖(如 Spring Web、MySQL 驱动),一键生成可运行的微服务项目,无需手动导入 JAR 包。
强大的代码重构与优化
- 重构功能全覆盖:新手写代码时容易出现「变量名不规范」「方法过长」「类职责混乱」等问题,IDEA 提供一键重构工具:
- 重命名变量 / 类 / 方法(
Shift+F6):自动更新所有引用处,避免手动修改导致的遗漏; - 提取方法(
Ctrl+Alt+M):将冗长代码块提取为独立方法,提升可读性; - 接口重构、类继承调整等,均有可视化引导。
- 重命名变量 / 类 / 方法(
- 代码质量检测:内置「Inspection」工具,实时提示代码冗余、性能问题、不规范写法(如「未使用的变量」「循环可以用 Stream 简化」),并给出优化建议,帮助新手养成良好编码习惯。
- 重构功能全覆盖:新手写代码时容易出现「变量名不规范」「方法过长」「类职责混乱」等问题,IDEA 提供一键重构工具:
对 Java 生态的深度适配
- 框架支持:对 Spring Boot/Cloud、MyBatis、Hibernate 等主流 Java 框架的支持远超 Eclipse:
- 识别 Spring 注解(如
@Autowired),自动跳转至被注入的 Bean; - MyBatis 中,按住
Ctrl点击 Mapper 接口的方法,直接跳转至 XML 映射文件; - 微服务开发中,支持服务注册发现、配置中心的可视化操作。
- 识别 Spring 注解(如
- 多语言支持:除了 Java,还原生支持 Kotlin(Java 姊妹语言)、Scala、Groovy 等 JVM 语言,以及 HTML/CSS/JS、SQL 等,适合全栈式 Java 开发(如前后端分离项目)。
- 框架支持:对 Spring Boot/Cloud、MyBatis、Hibernate 等主流 Java 框架的支持远超 Eclipse:
强大的调试与测试工具
- 调试功能:比 Eclipse 更灵活、可视化:
- 条件断点:仅当满足特定条件(如
i == 5)时触发断点,避免循环中频繁中断; - 变量监控:调试时实时显示变量值,支持「表达式求值」(如手动输入
list.get(0)查看结果); - 远程调试:轻松连接远程服务器上的 Java 程序(如生产环境问题排查)。
- 条件断点:仅当满足特定条件(如
- 测试集成:内置 JUnit、TestNG 测试框架支持,一键运行测试用例,可视化显示测试结果(通过 / 失败),并定位测试不通过的代码行。
- 调试功能:比 Eclipse 更灵活、可视化:
丰富的插件生态(按需扩展)
IDEA 的插件市场包含数万款第三方插件,覆盖开发全流程:
- 开发效率类:Lombok(简化 POJO 类代码,无需写 getter/setter)、Free MyBatis Plugin(生成 Mapper 代码);
- 工具集成类:Database Tools(直接连接 MySQL/Redis 等数据库,可视化操作数据)、Git 集成(比 Eclipse 更流畅的代码提交、冲突解决);
- 编码规范类:Alibaba Java Coding Guidelines(阿里编码规范插件,实时检测不规范代码);
- 界面美化类:Material Theme UI(美化 IDE 界面,更现代简洁)。
IDEA 基础
卸载
卸载:在 控制面板 -> 程序和功能 中找到 IntelliJ IDEA,右键卸载

删除残余文件:

下载/安装
下载:

安装:

激活
激活步骤:
启动 IDEA:启动后会在
C:\Users\Mr\AppData\Roaming\JetBrains下创建以下目录/文件
运行激活软件:在给的激活资料中双击运行以下软件激活 IDEA

界面

基本使用
初次打开 IDEA

创建 Hello 项目

常见错误@
常见错误:
错误1:版本不匹配:
运行时提示
不支持发行版本 XX原因 & 解决:JDK 和 Language Level 版本不匹配,将 Language Level 改成
SDK Default即可。
错误2:没有 out 路径

原因 & 解决:没有设置 output 路径,设置一个路径即可。

错误2:src 右键没有Class、Pacakge选项

原因 & 解决:src 处于灰色状态,将其设置为
Sources Root,此时变为蓝色即可。
IDEA 设置
字体设置

主题设置

字符编码设置

隐藏参数提示
调用方法时,IDEA 默认会添加参数的提示:

如果需要隐藏它,可以进行以下设置:

缩进设置
缩进设置:
修改 IntelliJ IDEA 的缩进设置(从 4 改为 2)主要有两种方式:通过 IDE 全局设置(适合个人习惯)和 通过 .editorconfig 文件(适合团队协作,推荐)。
以下是具体操作步骤:
方法一:修改 IDE 设置(最直接的方法)
这种方式会修改当前项目的配置。如果你没有使用 .editorconfig,这个设置会立即生效。
打开设置窗口:
Windows/Linux:
File->Settings(快捷键Ctrl+Alt+S)Mac:
IntelliJ IDEA->Settings...(快捷键Cmd+,)
定位到 Code Style:
- 依次展开:
Editor->Code Style。
- 依次展开:
针对特定语言修改(以 Java 为例):
点击
Java(或者你想修改的语言,如JavaScript,JSON,XML等)。点击右侧面板的 Tabs and Indents 标签页。
修改以下数值:
Tab size: 改为
2Indent: 改为
2Continuation indent: 改为
4(通常是缩进的2倍,也可以设为2)
(可选) 确保 Use tab character 未勾选(推荐使用空格代替 Tab)。

方法二:使用 .editorconfig 文件(推荐,覆盖性更强)
如果你的项目根目录下有一个名为 .editorconfig 的文件,IDE 的设置会被这个文件覆盖。这是现代项目管理代码风格的标准做法。
在项目根目录打开(或新建)
.editorconfig文件。找到或添加以下配置:
ini# 对所有文件生效 [*] indent_style = space indent_size = 2 # 或者你可以针对特定文件类型设置 [*.{java,js,ts,xml,html}] indent_size = 2保存文件后,IDEA 会自动识别并应用新的缩进规则,无论你 IDE 的设置里填的是多少。
注意事项:
- 修改设置只影响新写的代码。旧代码不会自动变,需要手动格式化。
- 自动检测(
Detect and use existing file indents)会导致设置在旧文件中不生效,因为 IDEA 会智能保持该文件的风格,忽略你的设置。
显示空格符号

注释跟随光标缩进【失败】
问题:默认情况下,IDEA 会把行注释符 // 强制放在行首(第一列),而不是跟随代码缩进。

设置:
可以通过以下步骤修改这个行为,让 // 自动跟随你的光标缩进:
打开设置:
- Windows/Linux:
Ctrl+Alt+S - Mac:
Cmd+,
- Windows/Linux:
定位到 Java 代码风格:
- 依次点击:Editor -> Code Style -> Java。
找到“代码生成”选项卡:
- 在右侧面板上方,点击 Code Generation 标签页。
取消勾选首列选项:
- 找到 Comment Code 区域。
- ❌ 取消勾选
Line comment at first column(行注释在首列)。 - (推荐) ✅ 同时 勾选
Add a space at comment start(在注释头添加空格),这样生成的注释是// 内容而不是//内容,更美观。
点击 OK 保存。

常用快捷键
IDEA 的快捷键非常多,但你不需要死记硬背所有。掌握以下这 20% 的核心快捷键,就能解决你 80% 的开发场景。
以下是 Windows 系统 下最实用、最高频的快捷键,按功能场景分类:
万能键
这两个快捷键是 IDEA 的灵魂,如果你只能记住两个,必须是它们。
| 快捷键 | 名称 | 详细说明 |
|---|---|---|
Alt + Enter | 智能辅助 / 修复 | 这是最重要的键。 它可以自动导包、快速修复报错、自动生成变量名、把 Lambda 转换成匿名内部类等。遇到红色波浪线或黄色警告,按它准没错。 |
Shift (按两下) | Search Everywhere | 搜索一切。无论是找类、找文件、找功能设置,还是找快捷键,双击 Shift 就能呼出搜索框。 |
编码与编辑
让你在写代码时双手不离键盘。
| 快捷键 | 功能 | 说明 |
|---|---|---|
Ctrl + Space | 基本代码补全 | 提示类名、方法名、变量名(默认配置,有时需修改以防与输入法冲突)。 |
Ctrl + Shift + Space | 智能代码补全 | 比上面更聪明,它会根据上下文只推荐类型匹配的结果。 |
Ctrl + p | 方法参数提示 | 用于显示方法参数提示 |
Ctrl + D | 复制行 | Duplicate。复制当前行到下一行(不用选中整行)。 |
Ctrl + Y | 删除行 | 删除当前所在行(不用选中整行)。 |
Ctrl + / | 行注释 | 对当前行或选中区域进行 // 注释。 |
Ctrl + Shift + / | 块注释 | 对选中区域进行 /* ... */ 注释。 |
Ctrl + Alt + L | 格式化代码 | 强迫症福音。瞬间把凌乱的代码排版得整整齐齐。 |
Ctrl + Alt + O | 优化导入 | Optimize Imports。自动删除没用到的 import 包。 |
Ctrl + Shift + U | 切换大小写 | 对选中文本进行大小写切换。 |
Alt + J | 多行编辑 | 按住Alt + J来创建多个光标,然后进行编辑。按ESC退出多行编辑模式。 |
Alt + Insert | 生成构造/Getter/Setter等 | 用于生成代码,如构造函数、setter和getter方法,或者重写父类的方法。 |
快速导航与跳转
不要用鼠标在左侧的项目树(Project View)里一层层点,用这些键“飞”过去。
| 快捷键 | 功能 | 说明 |
|---|---|---|
Ctrl + N | 查找类 | 输入类名(支持首字母缩写,如 US 找 UserService)快速跳转。 |
Ctrl + Shift + N | 查找文件 | 查找项目中的任意文件(如 .properties, .xml, .js)。 |
Ctrl + E | 最近打开的文件 | 弹出一个小窗口,列出你最近编辑过的文件列表,回车即达。 |
Ctrl + B | 声明/定义跳转 | 光标放在方法名上按它,直接跳到方法定义的地方(同 Ctrl + 左键)。 |
Ctrl + H | 查看类层级关系 | 查看类的层次结构图,帮助开发者分析类的继承关系和实现结构。 |
Ctrl + Alt + 左/右箭头 | 后退/前进 | 像浏览器的后退/前进一样,在你的光标浏览历史中跳转。 |
F2 | 跳转到错误 | 直接跳转到当前文件中的下一个报错或警告位置(不用肉眼找红线)。 |
查找与替换
| 快捷键 | 功能 | 说明 |
|---|---|---|
Ctrl + F | 当前文件查找 | Find。在当前打开的文件里搜索。 |
Ctrl + R | 当前文件替换 | Replace。在当前打开的文件里替换。 |
Ctrl + Shift + F | 全局查找 | Find in Files。在整个项目中搜索某个字符串(非常常用)。 |
Ctrl + Shift + R | 全局替换 | Replace in Files。慎用,威力巨大。 |
重构与修改
这是体现 IDE 威力的地方,修改代码安全又高效。
| 快捷键 | 功能 | 说明 |
|---|---|---|
Shift + F6 | 重命名 | 千万别手动改名! 用这个键,它会把所有引用这个变量/方法/类的地方全部自动改过来。 |
Ctrl + Alt + M | 提取方法 | 选中一段复杂的代码,按这个键,自动把它提取成一个独立的方法。 |
Ctrl + Alt + V | 提取变量 | new User(); 写完后按这个键,自动帮你补全左边的 User user = 。等价于.var后缀。 |
运行与调试
| 快捷键 | 功能 | 说明 |
|---|---|---|
Shift + F10 | 运行 (Run) | 运行当前项目。 |
Shift + F9 | 调试 (Debug) | 以 Debug 模式运行。 |
F8 | Step Over | 调试时:单步执行(不进入方法内部)。 |
F7 | Step Into | 调试时:进入方法内部。 |
实用学习建议
- Ctrl + Shift + A (Find Action): 如果你突然忘了“格式化代码”的快捷键是什么,按下
Ctrl + Shift + A,输入“format”,它不仅会帮你执行格式化,还会在旁边显示对应的快捷键(Ctrl + Alt + L),帮你记忆。 - 安装 "Key Promoter X" 插件: 这是 IDEA 的一款神级插件。每当你用鼠标点击某个功能(比如点击了运行按钮),它就会在右下角弹窗“吼”你:“刚才这个操作可以用
Shift + F10完成!”。用几次你就记住了。
修改快捷键

配置 auto import

实时代码模板
在 IntelliJ IDEA 中,这些快捷键被称为 Live Templates (实时代码模板) 和 Postfix Completion (后缀补全)。熟练使用它们能将你的编码速度提升至少 50%,让你专注于逻辑而不是繁琐的语法。
以下是 Java 开发中最常用、最高频的快捷模版,按使用场景分类:
基础入口与输出
这是写任何 Java 程序都会用到的起手式。
| 快捷键 | 展开后的代码 (预览) | 说明 |
|---|---|---|
psvm / main | public static void main(String[] args) { } | 生成 main 方法,程序的入口。 |
sout | System.out.println(); | 标准打印输出。 |
soutp | System.out.println("args = " + Arrays.toString(args)); | Parameters。打印当前方法的所有参数名和值(调试神技)。 |
soutv | System.out.println("x = " + x); | Variable。打印最近的一个变量名和值。 |
soutm | System.out.println("ClassName.methodName"); | Method。打印当前类名和方法名(用于追踪执行流程)。 |
循环与遍历
写循环时,再也不用手敲 for (int i = 0; ...) 了。
| 快捷键 | 展开后的代码 (预览) | 说明 |
|---|---|---|
fori | for (int i = 0; i < ; i++) { } | 经典的带索引 for 循环。 |
iter | for (String s : list) { } | 智能增强 for 循环 (foreach)。它会自动识别你光标附近的集合或数组。 |
itar | for (int i = 0; i < args.length; i++) { String arg = args[i]; } | Array。专门遍历数组,并自动生成获取元素的变量。 |
条件判断与非空检查
Java 开发中为了防止空指针异常 (NPE),这些检查非常频繁。
| 快捷键 | 展开后的代码 (预览) | 说明 |
|---|---|---|
ifn | if (user == null) { } | If Null。判断某变量是否为空。 |
inn | if (user != null) { } | If Not Null。判断某变量是否不为空。 |
inst | if (obj instanceof String) { String s = (String) obj; } | 检查类型并强转(JDK 14+ 以前很有用)。 |
变量定义与常量
快速定义静态常量或单例模式。
| 快捷键 | 展开后的代码 (预览) | 说明 |
|---|---|---|
psfs | public static final String | 定义公开的静态字符串常量。 |
prsf | private static final | 定义私有的静态常量(常用于 Logger 或单例)。 |
thr | throw new | 快速抛出异常。 |
进阶:后缀补全
这是 IDEA 比 Eclipse 等其他 IDE 更强大的地方。不要把光标移回行首,直接在变量后面加 . 然后输入缩写,回车即可。这是最符合思维逻辑的编码方式。
.var:自动声明变量。- 输入:
new User().var - 结果:
User user = new User();(自动推断类型并起名)
- 输入:
.nn:非空检查。- 输入:
user.nn - 结果:
if (user != null) { }
- 输入:
.null:空检查。- 输入:
user.null - 结果:
if (user == null) { }
- 输入:
.for:遍历。- 输入:
userList.for - 结果:
for (User user : userList) { }
- 输入:
.sout:打印。- 输入:
user.getName().sout - 结果:
System.out.println(user.getName());
- 输入:
.return:返回。- 输入:
result.return - 结果:
return result;
- 输入:
查看/自定义模版
如果你想查看所有模版,或者修改它们(比如把 sout 改成 System.err.println):
打开设置:Settings (Mac:
Cmd + ,/ Win:Ctrl + Alt + S)导航到:Editor -> Live Templates

展开 Java 组,你就能看到上面提到的所有缩写,你可以自定义指定模版。

模块管理
在 IntelliJ IDEA 中,模块 (Module) 是一个非常核心但常被初学者误解的概念。如果不理解它,你在开发多模块项目(如 Spring Cloud 微服务)时会非常痛苦。
以下是关于 IDEA 模块管理的详细介绍,从概念到实战。
Project vs Module
Project vs Module:这是 IDEA 和 Eclipse 最大的不同点,必须首先理清:
Project (项目):
- 相当于 Eclipse 中的 "Workspace" (工作空间)。
- 它是最高层级的容器,主要定义了项目的基准配置(如
.idea文件夹),比如整个项目的 SDK 版本、语言级别等。 - 一个 IDEA 窗口 = 一个 Project。
Module (模块):
- 相当于 Eclipse 中的 "Project"。
- 它是一个独立的功能单元。一个 Project 可以包含多个 Module。
- 每个 Module 可以有自己独立的:
- 源代码文件夹 (
src) - 编译输出目录 (
out或target) - 依赖库 (Dependencies)
- 甚至 JDK 版本 (比如模块 A 用 Java 8,模块 B 用 Java 17)
- 源代码文件夹 (
比喻:如果 Project 是一所 大学,那么 Module 就是里面的 学院(计算机学院、外语学院)。它们同属一个学校管理,但各自有各自的教学楼、教材和课程。

模块管理入口
模块管理入口:管理模块的核心界面在 Project Structure (项目结构) 中。
- 快捷键:
Ctrl + Alt + Shift + S(如果不记得,按Ctrl + Shift + A搜 "Project Structure") - 菜单路径:
File->Project Structure...-> 左侧栏选择 Modules
在这个界面,你可以对模块进行“增、删、改、查”。

模块常用操作
创建新模块
创建新模块 (New Module):
场景:你想在一个大项目里通过不同的文件夹练习不同的技术(如 java-basic, java-advanced)。
- 打开 Project Structure -> Modules。
- 点击上方的
+号 -> New Module。 - 选择语言(如 Java)和构建工具(Maven/Gradle 或 IntelliJ 原生)。
- 起名并完成。此时你会看到项目栏里多了一个粗体显示的文件夹,那就是新模块。

导入已有模块
导入已有模块 (Import Module):
场景:你从 GitHub 下载了一个开源项目,想把它加入到你当前正在写的项目中一起调试。
- 打开 Project Structure -> Modules。
- 点击
+号 -> Import Module。 - 选择目标项目的文件夹(通常选
pom.xml或build.gradle文件会让 IDEA 自动识别)。 - 一路 Next,该项目就会变成当前 Project 下的一个 Module。

注意:导入模块后会发现模块的 src 目录是灰色的(正常是蓝色),可以右键手动设置 src 为 Sources Root。

删除模块
删除模块 (Delete Module):
注意:这里的“删除”有两步,为了防止误删代码,IDEA 设计得很保守。
第一步(逻辑移除):在 Project 视图中右键点击模块 ->
Remove Module(或者Load/Unload Modules)。- 此时文件还在硬盘上,只是 IDEA 不再把它当代码处理了。

第二步(物理删除):当模块不再高亮显示,变成普通文件夹图标后,再次右键点击该文件夹 ->
Delete。- 此时文件才真正从硬盘删除(回收站也没有)。

恢复 Remove 的模块:
方式一:创建和 remove 的模块同名的模块

方式二:重新导入被 remove 的模块
重命名模块
重命名模块:
场景:如果决定模块名需要修改,执行以下操作:
方式一:快捷键:
Shift + F6(重命名) -> 选择要重命名的类型(directory/module/both)。方式二:菜单路径:
右击要改名的模块 -> Refactor -> Rename -> 选择要重命名的类型(directory/module/both)。

依赖管理
关键配置:依赖管理 (Dependencies):
这是模块管理中最重要的一环。如果你的代码里 import 报红,通常是这里没配好。
在 Project Structure -> Modules -> 选择某个模块 -> 右侧选择 Dependencies (依赖) 标签页。 这里决定了该模块能“看到”哪些代码:
- Module SDK:选择该模块使用的 JDK 版本。
+号添加依赖:Jars or Directories:引入本地的
.jar包(在不使用 Maven 时常用)。Library:引入全局配置好的库。
Module Dependency:最常用。让模块 A 依赖模块 B(比如
Web模块需要调用Service模块的代码)。
Scope (作用域) 说明:
- Compile:默认值。编译、测试、运行都能用。
- Test:只有在写单元测试(
test文件夹)时能用到该库(如 JUnit)。 - Provided:编译时需要,但运行时不打包进去(通常由容器提供,如 Servlet API)。

现代开发中的模块
现代开发中的模块 (Maven/Gradle):
虽然 IDEA 提供了原生的模块管理,但在现在的 Java 开发中(特别是 Spring Boot),我们通常使用 Maven 或 Gradle 来自动管理模块。
- 父子工程:在 Maven 的
pom.xml中定义的<modules>结构,IDEA 会自动识别并将其转换为 IDEA 的 Modules。 - 同步:当你修改了
pom.xml后,记得点击右上角出现的 小象图标 (Load Maven Changes),IDEA 才会更新模块结构。
包管理
IDEA、Eclipse 等 IDE 会自动根据 package 语句创建目录结构,编译和运行时自动处理类路径,无需手动操作。
创建包:
- 右键
src目录 →New→Package; - 输入包名(如
com.demo.controller),IDEA 自动创建com/demo/controller目录; - 在包下创建类,自动生成
package语句。

删除包:删除包比较简单,直接右键删除即可。
更改包文件显示结构:包以树形层级显示

Debug
IntelliJ IDEA 的 Debug 功能被公认为所有 IDE 中最强大、最智能的。掌握它,你可以彻底告别“到处写 System.out.println 然后再一行行删掉”的低效调试方式。
以下是从入门到进阶的详细介绍:
启动 Debug
启动 Debug:
打断点 (Breakpoint):在代码编辑区的行号右侧空白处点击左键,会出现一个🔴红点。程序运行到这就“卡”住了。

启动:点击工具栏上的“绿色小虫子”图标,或者按快捷键
Shift + F9。
控制面板
控制面板:
当程序在断点停下时,下方会出现 Debug 面板。最常用的是那一排蓝色/红色的箭头按钮。
| 图标 (近似) | 快捷键 | 名称 | 详细功能说明 |
|---|---|---|---|
| ↷ (折线箭头) | F8 | Step Over | 逐行执行,最常用。执行当前行,然后光标跳到下一行。遇到方法调用不进去,直接把那个方法当成一行跑完。 |
| ↓ (向下箭头) | F7 | Step Into | 跳入方法,遇到方法调用时,跳进该方法内部查看细节。 |
| ↓ (红色箭头) | Alt + Shift + F7 | Force Step Into | 强行跳入源码。F7 默认会跳过 JDK 源码(如 String 的源码),如果你想看 JDK 底层或第三方库源码,必须用这个。 |
| ↑ (向上箭头) | Shift + F8 | Step Out | 跳出方法,这里的逻辑看完了,不想一行行走到头,按这个直接跑完当前方法剩余代码,并返回到调用它的地方。 |
| ▶ (绿色三角) | F9 | Resume Program | 放行。直接跑起来,直到遇到下一个断点才停。如果没有下一个断点,程序就直接跑完。 |
| ■ (红色方块) | Ctrl + F2 | Stop | 停止调试,关闭程序。 |

断点调试实战
逐行执行代码
package com.hspedu.debug_;
public class Debug01 {
public static void main(String[] args) {
// 演示逐行执行代码
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += i;
System.out.println("i=" + i);
System.out.println("sum=" + sum);
}
}
}数组越界异常调试
package com.hspedu.debug_;
public class Debug02 {
public static void main(String[] args) {
int[] arr = {1, 10, -1};
// 数组长度为3,i<=3 会导致越界
for (int i = 0; i <= arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("退出 for");
}
}查看 JDK 源码
package com.hspedu.debug_;
import java.util.Arrays;
public class Debug03 {
public static void main(String[] args) {
int[] arr = {1, -1, 10, -20, 100};
// 调试查看 Arrays.sort 底层实现
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
}
}动态断点与 F9 用法
package com.hspedu.debug_;
import java.util.Arrays;
// 演示执行到下一个断点,支持动态下断点
public class Debug04 {
public static void main(String[] args) {
int[] arr = {1, -1, 10, -20, 100};
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println("hello100");
System.out.println("hello200");
System.out.println("hello300");
System.out.println("hello400");
System.out.println("hello500");
System.out.println("hello600");
System.out.println("hello700");
}
}追踪对象创建过程
使用断点调试追踪对象创建过程(Person[name,age,构造器..])
追踪动态绑定过程
使用断点调试查看动态绑定机制的工作原理
查看数据
IDEA 最强的地方在于数据可视化的直观性。
行内提示
行内提示 (Inline View):
你不需要去面板里找变量。IDEA 会直接在代码编辑器的每一行后面,用灰色的字显示当前变量的值。
示例:代码是 int a = 10;,运行后这行后面会显示 a: 10。

变量面板
变量面板 (Variables):
在 Debug 窗口左侧,列出了当前作用域内所有变量的值。
- 修改变量值:你可以右键点击某个变量 ->
Set Value(或F2),在程序运行时强行修改它的值。
场景:你想测试 if (count > 100) 的逻辑,但当前 count 只有 1,你可以直接把它改成 101,看看程序会不会进 if。

监视器
监视器 (Watches):
如果 Variables 里变量太多,或者你想看一个复杂的计算结果(比如 list.get(0).getUser().getName()),可以使用 Watches。
示例:点击 Variables 面板上的 + 号,输入任何合法的 Java 表达式,它会实时显示结果。

高级技巧
这些功能是区别“新手”和“老手”的分水岭。
F7 查看 JDK 源码
默认情况下按下 F7 并不能进入 JDK 源码,必须通过 Shift + Alt + F7 强制进入,可以通过以下方式取消 F7 的默认限制:

计算表达式
计算表达式 (Evaluate Expression):
- 快捷键:
Alt + F8 - 功能:这是一个沙盒。当程序卡在断点时,你按
Alt + F8会弹出一个窗口。你可以在里面写任何代码来测试!
场景:你想验证这行代码 db.queryUser(id) 能不能查出数据,不用改代码重启,直接在弹窗里敲入并回车,立刻看到运行结果。
条件断点
条件断点 (Conditional Breakpoint):
场景:你在遍历一个
for (int i=0; i<10000; i++)的循环,bug 只在i=500时出现。你不可能按 500 次 F9。操作:在红点🔴上点击鼠标右键,在
Condition框里输入i == 500。
结果:程序会飞速跑过前 499 次,只在第 500 次时停下。

丢弃帧(没找到)
丢弃帧 (Drop Frame) —— “时光倒流”:
- 位置:Debug 窗口左侧的“Frames”面板(调用栈),右键点击栈顶的方法 ->
Drop Frame。 - 功能:后悔药。比如你手快按了 F8 走过了关键的一行代码,想回去重看。使用 Drop Frame 可以把当前方法从栈中“扔掉”,代码指针会回到该方法被调用的第一行,所有变量重置回进入方法前的状态(注:已发生的数据库操作或网络请求无法撤销)。
异常断点
异常断点 (Exception Breakpoints):
- 场景:程序莫名其妙崩了,报
NullPointerException,但你不知道是哪一行崩的。 - 操作:在 Breakpoints 管理面板(
Ctrl + Shift + F8),勾选Java Exception Breakpoints。 - 结果:一旦程序抛出异常,IDEA 会自动在抛出异常的那一行暂停,保留案发现场。

热部署
热部署 (Hot Swap):
- 功能:在 Debug 模式下,如果你发现逻辑写错了,直接改代码,然后点击菜单
Build->Recompile 'FileName.java'(或Ctrl + Shift + F9)。 - 结果:如果只是修改了方法体内的逻辑(没有加减方法或修改类结构),IDEA 可以不重启服务直接把新代码加载进去,你可以立刻接着调试新逻辑。