Skip to content

S01-02 基础-IDEA

[TOC]

概述

IDE

IDE(Integrated Development Environment,集成开发环境):是一套为开发者提供 “一站式编程解决方案” 的软件套件,它将编程所需的各类工具(编辑、编译、调试、构建等)集成在一个统一的界面中,替代了传统 “文本编辑器 + 命令行工具” 的零散工作模式,核心目标是 提升开发效率、降低技术门槛

IDE 的核心组成部分

所有 IDE 都围绕 “编程全流程” 设计,核心模块包括:

  1. 代码编辑器

    • 语法高亮(区分关键字、变量、注释)
    • 自动补全(代码提示、快捷键补全)
    • 格式化(自动调整代码缩进、排版)
    • 语法检查(实时标注语法错误) 写 Java 代码时,public class 自动高亮,输入 Sysout 自动补全为 System.out.println(),避免拼写错误。
  2. 编译器 / 解释器

    将源代码(如 .java 文件)转换为计算机可执行的字节码 / 机器码(如 .class 文件),并处理编译错误。 点击 “编译” 按钮,IDE 自动调用 javac 命令编译代码,若有语法错误(如少分号),直接在编辑器中标红提示。

  3. 调试器(Debugger)

    • 断点调试(暂停程序运行)
    • 单步执行(逐行查看代码执行过程)
    • 变量监控(实时查看变量值变化)
    • 调用栈分析(定位异常来源) 排查 Java 程序 bug 时,在关键行设置断点,运行后逐步执行,观察 i 变量是否符合预期,快速定位逻辑错误。
  4. 项目管理工具

    管理项目文件结构(如包、类、资源文件)、依赖(如 Jar 包)、构建脚本(如 Maven/Gradle)。 自动识别 Java 项目的 src/main/java 目录,管理 Spring Boot 项目的 pom.xml 依赖,一键下载所需 Jar 包。

  5. 运行 / 构建工具

    一键运行程序、打包项目(如生成 .jar/.war 文件)、部署到服务器(部分高级 IDE 支持)。 点击 “运行” 按钮,IDE 自动执行 java 命令启动程序;通过 Maven 插件一键打包为可部署的 Jar 包。

  6. 其他辅助工具

    • 版本控制集成(Git/SVN,提交代码、拉取分支)
    • 插件市场(扩展功能,如数据库连接、AI 辅助编程)
    • 终端集成(内置命令行,无需切换外部终端)

Java 开发主流 IDE

  1. IntelliJ IDEA(推荐):智能提示极强、插件生态丰富、对 Java 新特性支持最快、整合 Spring 等框架友好 企业级 Java 开发(Spring Boot/Cloud)、中大型项目、追求高效开发的开发者(新手 / 资深都适用)
  2. Eclipse:开源免费、轻量级(可按需安装插件)、历史悠久、生态成熟 学习 Java 基础(如语法、面向对象)、小型项目、教育场景(高校教学常用)
  3. NetBeans:完全开源、对 Java SE/EE 支持全面、内置 GUI 设计工具

IDE VS 普通文本编辑器

很多新手会混淆 “IDE” 和 “文本编辑器”(如记事本、Sublime Text、Notepad++),核心区别在于 “集成性”:

  • 普通编辑器:仅提供代码编写功能(如语法高亮),需手动配置编译器、调试器、依赖管理工具(如 VS Code 需安装 Java 插件才能支持编译调试);
  • IDE:开箱即用,无需额外配置核心工具,自带完整的开发闭环(编写 → 编译 → 调试 → 部署)。

IDE 的实际使用场景(以 Java 开发为例)

  1. 项目创建:通过 IDE 新建 “Java 项目”,自动生成标准目录结构(src 源码目录、resources 资源目录)。
  2. 代码开发:利用自动补全、语法高亮快速编写 HelloWorld.java,IDE 实时检查语法错误。
  3. 调试程序:在循环逻辑处设置断点,运行后单步执行,观察变量 i 的值变化,定位 “数组越界” 等 bug。
  4. 运行程序:点击「运行」按钮,IDE 自动编译代码并执行,控制台直接输出结果;
  5. 依赖管理:通过 IDE 集成的 Maven 工具,在 pom.xml 中添加 spring-boot-starter-web 依赖,IDE 自动下载并导入项目。
  6. 版本控制:直接在 IDE 中提交代码到 Git 仓库,拉取远程分支,解决代码冲突。
  7. 打包部署:通过 Maven 插件一键打包为 Jar 包,甚至直接部署到 Tomcat 服务器。

Eclipse

Eclipse:最初由 IBM 公司开发(2001 年推出),现在由非盈利的「Eclipse 基金会」维护,它的核心定位是:

  • 开源免费:无任何付费门槛,个人 / 企业使用都无需授权;
  • 跨平台:支持 Windows、Mac、Linux 等主流操作系统,一次配置可在不同电脑上使用;
  • 插件化架构:这是它最核心的特点 —— 基础版仅提供核心框架,通过安装插件可扩展支持 Java、C/C++、Python、Android、Web 开发等几乎所有主流开发场景。

Eclipse vs IntelliJ IDEA

维度EclipseIntelliJ 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 的核心竞争力是「智能」和「高效」:

  1. 极致的智能提示(碾压级优势)

    • 语法补全不止于关键字

      不仅能补全 publicclass 等关键字,还能智能识别变量类型、方法参数,例如:

      • 输入 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 更灵敏 —— 少写分号、变量未初始化、方法返回值遗漏等错误,实时标红并给出修复建议(如「添加分号」「初始化变量」),新手能快速规避低级错误。

  2. 开箱即用,零配置成本(新手友好)

    • 无需手动配置 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 包。
  3. 强大的代码重构与优化

    • 重构功能全覆盖:新手写代码时容易出现「变量名不规范」「方法过长」「类职责混乱」等问题,IDEA 提供一键重构工具:
      • 重命名变量 / 类 / 方法(Shift+F6):自动更新所有引用处,避免手动修改导致的遗漏;
      • 提取方法(Ctrl+Alt+M):将冗长代码块提取为独立方法,提升可读性;
      • 接口重构、类继承调整等,均有可视化引导。
    • 代码质量检测:内置「Inspection」工具,实时提示代码冗余、性能问题、不规范写法(如「未使用的变量」「循环可以用 Stream 简化」),并给出优化建议,帮助新手养成良好编码习惯。
  4. 对 Java 生态的深度适配

    • 框架支持:对 Spring Boot/Cloud、MyBatis、Hibernate 等主流 Java 框架的支持远超 Eclipse:
      • 识别 Spring 注解(如 @Autowired),自动跳转至被注入的 Bean;
      • MyBatis 中,按住 Ctrl 点击 Mapper 接口的方法,直接跳转至 XML 映射文件;
      • 微服务开发中,支持服务注册发现、配置中心的可视化操作。
    • 多语言支持:除了 Java,还原生支持 Kotlin(Java 姊妹语言)、Scala、Groovy 等 JVM 语言,以及 HTML/CSS/JS、SQL 等,适合全栈式 Java 开发(如前后端分离项目)。
  5. 强大的调试与测试工具

    • 调试功能:比 Eclipse 更灵活、可视化:
      • 条件断点:仅当满足特定条件(如 i == 5)时触发断点,避免循环中频繁中断;
      • 变量监控:调试时实时显示变量值,支持「表达式求值」(如手动输入 list.get(0) 查看结果);
      • 远程调试:轻松连接远程服务器上的 Java 程序(如生产环境问题排查)。
    • 测试集成:内置 JUnit、TestNG 测试框架支持,一键运行测试用例,可视化显示测试结果(通过 / 失败),并定位测试不通过的代码行。
  6. 丰富的插件生态(按需扩展)

    IDEA 的插件市场包含数万款第三方插件,覆盖开发全流程:

    • 开发效率类:Lombok(简化 POJO 类代码,无需写 getter/setter)、Free MyBatis Plugin(生成 Mapper 代码);
    • 工具集成类:Database Tools(直接连接 MySQL/Redis 等数据库,可视化操作数据)、Git 集成(比 Eclipse 更流畅的代码提交、冲突解决);
    • 编码规范类:Alibaba Java Coding Guidelines(阿里编码规范插件,实时检测不规范代码);
    • 界面美化类:Material Theme UI(美化 IDE 界面,更现代简洁)。

IDEA 基础

卸载

  1. 卸载:在 控制面板 -> 程序和功能 中找到 IntelliJ IDEA,右键卸载

    image-20260224135840490

  2. 删除残余文件

    image-20260224140106320

下载/安装

官网地址https://www.jetbrains.com/

下载

安装

激活

IDEA 激活IDEA-激活码-Win 系统(2024.1 版本及之前).rar

激活步骤

  1. 启动 IDEA:启动后会在C:\Users\Mr\AppData\Roaming\JetBrains下创建以下目录/文件

    image-20260113170831430

  2. 运行激活软件:在给的激活资料中双击运行以下软件激活 IDEA

    image-20260113171018938

界面

image-20260106165322331

基本使用

初次打开 IDEA

创建 Hello 项目

常见错误@

常见错误

  1. 错误1:版本不匹配

    运行时提示 不支持发行版本 XX

    原因 & 解决:JDK 和 Language Level 版本不匹配,将 Language Level 改成 SDK Default 即可。

    image-20260226113707067

  2. 错误2:没有 out 路径

    image-20260226114029713

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

    image-20260226114127484

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

    image-20260226114443280

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

    image-20260226103121512

IDEA 设置

字体设置

image-20260106173758782

主题设置

image-20260106174730228

字符编码设置

image-20260108204019973

隐藏参数提示

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

image-20260108114912694

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

image-20260108115056431

缩进设置

缩进设置

修改 IntelliJ IDEA 的缩进设置(从 4 改为 2)主要有两种方式:通过 IDE 全局设置(适合个人习惯)和 通过 .editorconfig 文件(适合团队协作,推荐)。

以下是具体操作步骤:

方法一:修改 IDE 设置(最直接的方法)

这种方式会修改当前项目的配置。如果你没有使用 .editorconfig,这个设置会立即生效。

  1. 打开设置窗口

    • Windows/Linux: File -> Settings (快捷键 Ctrl + Alt + S)

    • Mac: IntelliJ IDEA -> Settings... (快捷键 Cmd + ,)

  2. 定位到 Code Style

    • 依次展开:Editor -> Code Style
  3. 针对特定语言修改(以 Java 为例)

    • 点击 Java(或者你想修改的语言,如 JavaScript, JSON, XML 等)。

    • 点击右侧面板的 Tabs and Indents 标签页。

    • 修改以下数值

      • Tab size: 改为 2

      • Indent: 改为 2

      • Continuation indent: 改为 4 (通常是缩进的2倍,也可以设为2)

    • (可选) 确保 Use tab character 未勾选(推荐使用空格代替 Tab)。

image-20260121125110366

方法二:使用 .editorconfig 文件(推荐,覆盖性更强)

如果你的项目根目录下有一个名为 .editorconfig 的文件,IDE 的设置会被这个文件覆盖。这是现代项目管理代码风格的标准做法。

  1. 在项目根目录打开(或新建).editorconfig 文件。

  2. 找到或添加以下配置:

    ini
    # 对所有文件生效
    [*]
    indent_style = space
    indent_size = 2
    
    # 或者你可以针对特定文件类型设置
    [*.{java,js,ts,xml,html}]
    indent_size = 2

    保存文件后,IDEA 会自动识别并应用新的缩进规则,无论你 IDE 的设置里填的是多少。

注意事项

  1. 修改设置只影响新写的代码。旧代码不会自动变,需要手动格式化。
  2. 自动检测Detect and use existing file indents)会导致设置在旧文件中不生效,因为 IDEA 会智能保持该文件的风格,忽略你的设置。

显示空格符号

image-20260207171655620

注释跟随光标缩进【失败】

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

image-20260207172550593

设置

可以通过以下步骤修改这个行为,让 // 自动跟随你的光标缩进:

  1. 打开设置

    • Windows/Linux: Ctrl + Alt + S
    • Mac: Cmd + ,
  2. 定位到 Java 代码风格

    • 依次点击:Editor -> Code Style -> Java
  3. 找到“代码生成”选项卡

    • 在右侧面板上方,点击 Code Generation 标签页。
  4. 取消勾选首列选项

    • 找到 Comment Code 区域。
    • 取消勾选 Line comment at first column(行注释在首列)。
    • (推荐) ✅ 同时 勾选 Add a space at comment start(在注释头添加空格),这样生成的注释是 // 内容 而不是 //内容,更美观。
  5. 点击 OK 保存

image-20260207172344868

常用快捷键

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查找输入类名(支持首字母缩写,如 USUserService)快速跳转。
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 模式运行。
F8Step Over调试时:单步执行(不进入方法内部)。
F7Step Into调试时:进入方法内部。

实用学习建议

  1. Ctrl + Shift + A (Find Action): 如果你突然忘了“格式化代码”的快捷键是什么,按下 Ctrl + Shift + A,输入“format”,它不仅会帮你执行格式化,还会在旁边显示对应的快捷键(Ctrl + Alt + L),帮你记忆。
  2. 安装 "Key Promoter X" 插件: 这是 IDEA 的一款神级插件。每当你用鼠标点击某个功能(比如点击了运行按钮),它就会在右下角弹窗“吼”你:“刚才这个操作可以用 Shift + F10 完成!”。用几次你就记住了。

修改快捷键

image-20260106181225394

配置 auto import

image-20260106213852950

实时代码模板

在 IntelliJ IDEA 中,这些快捷键被称为 Live Templates (实时代码模板)Postfix Completion (后缀补全)。熟练使用它们能将你的编码速度提升至少 50%,让你专注于逻辑而不是繁琐的语法。

以下是 Java 开发中最常用、最高频的快捷模版,按使用场景分类:

基础入口与输出

这是写任何 Java 程序都会用到的起手式。

快捷键展开后的代码 (预览)说明
psvm / mainpublic static void main(String[] args) { }生成 main 方法,程序的入口。
soutSystem.out.println();标准打印输出。
soutpSystem.out.println("args = " + Arrays.toString(args));Parameters。打印当前方法的所有参数名和值(调试神技)。
soutvSystem.out.println("x = " + x);Variable。打印最近的一个变量名和值。
soutmSystem.out.println("ClassName.methodName");Method。打印当前类名和方法名(用于追踪执行流程)。

循环与遍历

写循环时,再也不用手敲 for (int i = 0; ...) 了。

快捷键展开后的代码 (预览)说明
forifor (int i = 0; i < ; i++) { }经典的带索引 for 循环。
iterfor (String s : list) { }智能增强 for 循环 (foreach)。它会自动识别你光标附近的集合或数组。
itarfor (int i = 0; i < args.length; i++) { String arg = args[i]; }Array。专门遍历数组,并自动生成获取元素的变量。

条件判断与非空检查

Java 开发中为了防止空指针异常 (NPE),这些检查非常频繁。

快捷键展开后的代码 (预览)说明
ifnif (user == null) { }If Null。判断某变量是否空。
innif (user != null) { }If Not Null。判断某变量是否不为空。
instif (obj instanceof String) { String s = (String) obj; }检查类型并强转(JDK 14+ 以前很有用)。

变量定义与常量

快速定义静态常量或单例模式。

快捷键展开后的代码 (预览)说明
psfspublic static final String定义公开的静态字符串常量。
prsfprivate static final定义私有的静态常量(常用于 Logger 或单例)。
thrthrow 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):

  1. 打开设置:Settings (Mac: Cmd + , / Win: Ctrl + Alt + S)

  2. 导航到:Editor -> Live Templates

    image-20260106215216201

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

    image-20260106215857085

模块管理

在 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)
    • 编译输出目录 (outtarget)
    • 依赖库 (Dependencies)
    • 甚至 JDK 版本 (比如模块 A 用 Java 8,模块 B 用 Java 17)

比喻:如果 Project 是一所 大学,那么 Module 就是里面的 学院(计算机学院、外语学院)。它们同属一个学校管理,但各自有各自的教学楼、教材和课程。

image-20260225163108351

模块管理入口

模块管理入口:管理模块的核心界面在 Project Structure (项目结构) 中。

  • 快捷键Ctrl + Alt + Shift + S (如果不记得,按 Ctrl + Shift + A 搜 "Project Structure")
  • 菜单路径File -> Project Structure... -> 左侧栏选择 Modules

在这个界面,你可以对模块进行“增、删、改、查”。

image-20260121110857804

模块常用操作

创建新模块

创建新模块 (New Module)

场景:你想在一个大项目里通过不同的文件夹练习不同的技术(如 java-basic, java-advanced)。

  1. 打开 Project Structure -> Modules
  2. 点击上方的 + -> New Module
  3. 选择语言(如 Java)和构建工具(Maven/Gradle 或 IntelliJ 原生)。
  4. 起名并完成。此时你会看到项目栏里多了一个粗体显示的文件夹,那就是新模块。

image-20260121111317202

导入已有模块

导入已有模块 (Import Module)

场景:你从 GitHub 下载了一个开源项目,想把它加入到你当前正在写的项目中一起调试。

  1. 打开 Project Structure -> Modules
  2. 点击 + -> Import Module
  3. 选择目标项目的文件夹(通常选 pom.xmlbuild.gradle 文件会让 IDEA 自动识别)。
  4. 一路 Next,该项目就会变成当前 Project 下的一个 Module。

image-20260226102604976

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

image-20260226103121512

删除模块

删除模块 (Delete Module)

注意:这里的“删除”有两步,为了防止误删代码,IDEA 设计得很保守。

  1. 第一步(逻辑移除):在 Project 视图中右键点击模块 -> Remove Module (或者 Load/Unload Modules)。

    • 此时文件还在硬盘上,只是 IDEA 不再把它当代码处理了。

    image-20260120172603100

  2. 第二步(物理删除):当模块不再高亮显示,变成普通文件夹图标后,再次右键点击该文件夹 -> Delete

    • 此时文件才真正从硬盘删除(回收站也没有)。

    image-20260120172806875

  3. 恢复 Remove 的模块

    1. 方式一:创建和 remove 的模块同名的模块

      image-20260120173224502

    2. 方式二:重新导入被 remove 的模块

重命名模块

重命名模块

场景:如果决定模块名需要修改,执行以下操作:

  • 方式一:快捷键

    Shift + F6(重命名) -> 选择要重命名的类型(directory/module/both)。

  • 方式二:菜单路径

    右击要改名的模块 -> Refactor -> Rename -> 选择要重命名的类型(directory/module/both)。

image-20260120173711516

依赖管理

关键配置:依赖管理 (Dependencies)

这是模块管理中最重要的一环。如果你的代码里 import 报红,通常是这里没配好。

Project Structure -> Modules -> 选择某个模块 -> 右侧选择 Dependencies (依赖) 标签页。 这里决定了该模块能“看到”哪些代码:

  1. Module SDK:选择该模块使用的 JDK 版本。
  2. + 号添加依赖
    • Jars or Directories:引入本地的 .jar 包(在不使用 Maven 时常用)。

    • Library:引入全局配置好的库。

    • Module Dependency最常用。让模块 A 依赖模块 B(比如 Web 模块需要调用 Service 模块的代码)。

Scope (作用域) 说明

  • Compile:默认值。编译、测试、运行都能用。
  • Test:只有在写单元测试(test 文件夹)时能用到该库(如 JUnit)。
  • Provided:编译时需要,但运行时不打包进去(通常由容器提供,如 Servlet API)。

image-20260121112858906

现代开发中的模块

现代开发中的模块 (Maven/Gradle)

虽然 IDEA 提供了原生的模块管理,但在现在的 Java 开发中(特别是 Spring Boot),我们通常使用 MavenGradle 来自动管理模块。

  • 父子工程:在 Maven 的 pom.xml 中定义的 <modules> 结构,IDEA 会自动识别并将其转换为 IDEA 的 Modules。
  • 同步:当你修改了 pom.xml 后,记得点击右上角出现的 小象图标 (Load Maven Changes),IDEA 才会更新模块结构

包管理

IDEA、Eclipse 等 IDE 会自动根据 package 语句创建目录结构,编译和运行时自动处理类路径,无需手动操作

创建包

  1. 右键 src 目录 → NewPackage
  2. 输入包名(如 com.demo.controller),IDEA 自动创建 com/demo/controller 目录;
  3. 在包下创建类,自动生成 package 语句。

image-20260226104027621

删除包:删除包比较简单,直接右键删除即可。

更改包文件显示结构:包以树形层级显示

image-20260226104753675

Debug

IntelliJ IDEA 的 Debug 功能被公认为所有 IDE 中最强大、最智能的。掌握它,你可以彻底告别“到处写 System.out.println 然后再一行行删掉”的低效调试方式。

以下是从入门到进阶的详细介绍:

启动 Debug

启动 Debug

  • 打断点 (Breakpoint):在代码编辑区的行号右侧空白处点击左键,会出现一个🔴红点。程序运行到这就“卡”住了。

    image-20260120174741008

  • 启动:点击工具栏上的“绿色小虫子”图标,或者按快捷键 Shift + F9

    image-20260120174815577

控制面板

控制面板

当程序在断点停下时,下方会出现 Debug 面板。最常用的是那一排蓝色/红色的箭头按钮

图标 (近似)快捷键名称详细功能说明
↷ (折线箭头)F8Step Over逐行执行最常用。执行当前行,然后光标跳到下一行。遇到方法调用不进去,直接把那个方法当成一行跑完。
↓ (向下箭头)F7Step Into跳入方法,遇到方法调用时,跳进该方法内部查看细节。
(红色箭头)Alt + Shift + F7Force Step Into强行跳入源码F7 默认会跳过 JDK 源码(如 String 的源码),如果你想看 JDK 底层或第三方库源码,必须用这个。
↑ (向上箭头)Shift + F8Step Out跳出方法,这里的逻辑看完了,不想一行行走到头,按这个直接跑完当前方法剩余代码,并返回到调用它的地方。
(绿色三角)F9Resume Program放行。直接跑起来,直到遇到下一个断点才停。如果没有下一个断点,程序就直接跑完。
(红色方块)Ctrl + F2Stop停止调试,关闭程序。

image-20260120175653928

断点调试实战

逐行执行代码

java
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);
        }
    }
}

数组越界异常调试

java
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 源码

java
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 用法

java
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

image-20260121114743615

变量面板

变量面板 (Variables)

在 Debug 窗口左侧,列出了当前作用域内所有变量的值。

  • 修改变量值:你可以右键点击某个变量 -> Set Value (或 F2),在程序运行时强行修改它的值

场景:你想测试 if (count > 100) 的逻辑,但当前 count 只有 1,你可以直接把它改成 101,看看程序会不会进 if

image-20260121120732521

监视器

监视器 (Watches)

如果 Variables 里变量太多,或者你想看一个复杂的计算结果(比如 list.get(0).getUser().getName()),可以使用 Watches。

示例:点击 Variables 面板上的 + 号,输入任何合法的 Java 表达式,它会实时显示结果。

image-20260121120921895

高级技巧

这些功能是区别“新手”和“老手”的分水岭。

F7 查看 JDK 源码

默认情况下按下 F7 并不能进入 JDK 源码,必须通过 Shift + Alt + F7 强制进入,可以通过以下方式取消 F7 的默认限制:

image-20260204170150138

计算表达式

计算表达式 (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

    image-20260121121542274

  • 结果:程序会飞速跑过前 499 次,只在第 500 次时停下。

    image-20260121121548575

丢弃帧(没找到)

丢弃帧 (Drop Frame) —— “时光倒流”

  • 位置:Debug 窗口左侧的“Frames”面板(调用栈),右键点击栈顶的方法 -> Drop Frame
  • 功能后悔药。比如你手快按了 F8 走过了关键的一行代码,想回去重看。使用 Drop Frame 可以把当前方法从栈中“扔掉”,代码指针会回到该方法被调用的第一行,所有变量重置回进入方法前的状态(注:已发生的数据库操作或网络请求无法撤销)。

异常断点

异常断点 (Exception Breakpoints)

  • 场景:程序莫名其妙崩了,报 NullPointerException,但你不知道是哪一行崩的。
  • 操作:在 Breakpoints 管理面板(Ctrl + Shift + F8),勾选 Java Exception Breakpoints
  • 结果:一旦程序抛出异常,IDEA 会自动在抛出异常的那一行暂停,保留案发现场。

image-20260121122826197

热部署

热部署 (Hot Swap)

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