
JetBrains 官方说明:尽管我们采取了多种措施确保受访者的代表性,但结果可能会略微偏向 JetBrains 产品的用户,因为这些用户更有可能参加调查。
此外,2022 年,某美国软件开发商在对近千名专业的 Java 开发者调研后,发布了《2022 年 Java 开发者生产力报告》。报告提到:JetBrains 的 IntelliJ IDEA 是最受欢迎的 Java IDE,占 48%,其次是 Eclipse,占 24%,Visual Studio Code 占 18%。
本着”工欲善其事必先利其器”的精神,本章从 IDEA 的介绍、安装、设置入手,讲解 IDEA 中项目的创建、快捷键与模板的使用、断点调试、常用插件等。
认识 IntelliJ IDEA
JetBrains 公司介绍
IDEA,是 JetBrains(https://www.jetbrains.com/)公司的产品,该公司成立于 2000 年,总部位于捷克的布拉格,致力于为开发者打造最高效智能的开发工具。
公司旗下还有其它产品,比如:
- WebStorm:用于开发 JavaScript、HTML5、CSS3 等前端技术
- PyCharm:用于开发 Python
- PhpStorm:用于开发 PHP
- RubyMine:用于开发 Ruby/Rails
- AppCode:用于开发 Objective-C/Swift
- CLion:用于开发 C/C++
- DataGrip:用于开发数据库和 SQL
- Rider:用于开发 .NET
- GoLand:用于开发 Go
用于开发 Android 的 Android Studio,也是 Google 基于 IDEA 社区版进行迭代的。
IntelliJ IDEA 介绍
IDEA,全称 IntelliJ IDEA,是 Java 语言的集成开发环境,目前已经基本代替了 Eclipse 的使用。IDEA 在业界被公认为是最好的 Java 开发工具(之一),因其功能强悍、设置人性化,而深受 Java、大数据、移动端程序员的喜爱。
IntelliJ IDEA 在 2015 年的官网上这样介绍自己:
Excel at enterprise, mobile and web development with Java, Scala and Groovy, with all the latest modern technologies and frameworks available out of thebox.

IDEA 的主要优势
功能强大:
- 强大的整合能力。比如:Git、Maven、Spring 等
- 开箱即用的体验(集成版本控制系统、多语言支持的框架随时可用,无需额外安装插件)
符合人体工程学:
- 高度智能(快速的智能代码补全、实时代码分析、可靠的重构工具)
- 提示功能的快速、便捷、范围广
- 好用的快捷键和代码模板
- 精准搜索
IDEA 的下载和安装
下载网址:https://www.jetbrains.com/idea/download/
IDEA 分为两个版本:旗舰版(Ultimate)和社区版(Community)。两个不同版本的详细对比,可以参照官网:https://www.jetbrains.com/idea/features/editions_comparison_matrix.html
IDEA 的大版本每年迭代一次,大版本下的小版本(如:2022.x)迭代时间不固定,一般每年 3 个小版本。
官网提供的详细使用文档:https://www.jetbrains.com/help/idea/meet-intellij-idea.html
安装前的准备:
- 64 位操作系统:Windows、Mac
- 最低 2 GB 可用 RAM,推荐 8 GB 系统总 RAM
- 2.5 GB 硬盘空间,推荐 SSD
- 最低屏幕分辨率 1024x768
从安装上来看,IntelliJ IDEA 对硬件的要求似乎不是很高。可是在实际开发中并不是这样的,因为 IntelliJ IDEA 执行时会有大量的缓存、索引文件,所以如果你正在使用 Eclipse/MyEclipse,想通过 IntelliJ IDEA 来解决计算机的卡、慢等问题,这基本上是不可能的,本质上你应该对自己的硬件设备进行升级。
注册:
- 选择 1:试用 30 天。需要先登录,才能开启试用。
- 选择 2:付费购买旗舰版
- 选择3:
****
JDK 相关设置
项目的 JDK 设置
File -> Project Structure... -> Platform Settings -> SDKs


- 注 1:SDKs 全称是 Software Development Kit,这里一定是选择 JDK 的安装根目录,不是 JRE 的目录。
- 注 2:这里还可以从本地添加多个 JDK。使用“+”即可实现。
out 目录和编译版本
File -> Project Structure... -> Project Settings -> Project

设置
取消自动更新
Settings -> Appearance & Behavior -> System Settings -> Updates

默认都打 √ 了,建议检查 IDE 更新的 √ 去掉,检查插件更新的 √ 选上。
显示行号与方法分隔符

代码智能提示功能

IntelliJ IDEA 的代码提示和补充功能有一个特性:区分大小写。 如果想不区分大小写的话,就把这个对勾去掉。建议去掉勾选。
自动导包
默认需要自己手动导包,Alt+Enter 快捷键
自动导包设置
- 动态导入明确的包:Add unambiguous imports on the fly,该设置具有全局性;
- 优化动态导入的包:Optimize imports on the fly,该设置只对当前项目有效;

项目文件编码(一定要改)

说明:Transparent native-to-ascii conversion 主要用于转换 ascii,显式原生内容。一般都要勾选。
设置控制台的字符编码:

自动编译
Settings -> Build, Execution, Deployment -> Compiler

工程与模块管理
层级关系:project(工程) - module(模块) - package(包) - class(类)
在 IntelliJ IDEA 中 Project 是最顶级的结构单元,然后就是 Module。目前,主流的大型项目结构基本都是多 Module 的结构,这类项目一般是按功能划分的,比如:user-core-module、user-facade-module 和 user-hessian-module 等等,模块之间彼此可以相互依赖,有着不可分割的业务关系。
在一个 module 下,可以声明多个 package(包),一般命名规范如下:
- 不要有中文
- 不要以数字开头
- 给包取名时一般都是公司域名倒着写,而且都是小写
- 比如:尚硅谷网址是:
www.atguigu.com - 那么 package 包名应该写成:
com.atguigu.子名字
- 比如:尚硅谷网址是:
代码模板
查看已有代码模版
Postfix Completion 模板(后缀补全)

Live Templates 模板(实时模板)

常用代码模板
非空判断:
变量.null:if (变量 == null)变量.nn:if (变量 != null)变量.notnull:if (变量 != null)ifn:if (xx == null)inn:if (xx != null)
遍历数组和集合:
数组或集合变量.fori:for循环数组或集合变量.for:增强for循环数组或集合变量.forr:反向for循环数组或集合变量.iter:增强for循环遍历数组或集合
输出语句:
sout:System.out.printlnsoutm:打印当前方法的名称soutp:打印当前方法的形参及形参对应的实参值soutv:打印方法中声明的最近的变量的值变量.sout:打印当前变量值变量.soutv:打印当前变量名及变量值
对象操作:
- 创建对象
Xxx.new .var:创建 Xxx 类的对象,并赋给相应的变量Xxx.new .field:会将方法内刚创建的 Xxx 对象抽取为一个属性
- 强转
对象.cast:将对象进行强转对象.castvar:将对象强转后,并赋给一个变量
静态常量声明:
psf:public static finalpsfi:public static final intpsfs:public static final Stringprsf:private static final
自定义代码模板
自定义后缀补全模板


自定义 Live Templates
例如:定义 sop 代表 System.out.print(); 语句
在 Live Templates 中增加模板,先定义一个模板的组,这样方便管理所有自定义的代码模板:


在模板组里新建模板:


- Abbreviation:模板的缩略名称
- Description:模板的描述
- Template text:模板的代码片段
- 模板应用范围:点击 Define。选择如下:应用在 java 代码中

示例
单元测试模板:
@Test
public void test$var1$(){
$var2$
}创建多线程:
new Thread() {
public void run() {
$var$
}
};常用快捷键
提高编写速度-上
| 说明 | 快捷键 |
|---|---|
| 智能提示-edit | alt+enter |
| 提示代码模板-insert live template | ctrl+j |
| 使用 xx 块环绕-surround with … | ctrl+alt+t |
| 调出生成 getter/setter/构造器等结构-generate … | alt+insert |
| 自动生成返回值变量-introduce variable … | ctrl+alt+v |
| 复制指定行的代码-duplicate line or selection | ctrl+d |
| 删除指定行的代码-delete line | ctrl+y |
| 切换到下一行代码空位-start new line | shift+enter |
| 切换到上一行代码空位-start new line before current | ctrl+alt+enter |
| 向上移动代码-move statement up | ctrl+shift+↑ |
| 向下移动代码-move statement down | ctrl+shift+↓ |
| 向上移动一行-move line up | alt+shift+↑ |
| 向下移动一行-move line down | alt+shift+↓ |
| 方法的形参列表提醒-parameter info | ctrl+p |
提高编写速度-下
| 说明 | 快捷键 |
|---|---|
| 批量修改指定的变量名、方法名、类名等-rename | shift+f6 |
| 抽取代码重构方法-extract method … | ctrl+alt+m |
| 重写父类的方法-override methods … | ctrl+o |
| 实现接口的方法-implements methods … | ctrl+i |
| 选中的结构的大小写的切换-toggle case | ctrl+shift+u |
| 批量导包-optimize imports | ctrl+alt+o |
类结构、查找和查看源码
| 说明 | 快捷键 |
|---|---|
| 如何查看源码-go to class… | ctrl+选中指定的结构 或 ctrl+n |
| 显示当前类结构,支持搜索指定的方法、属性等-file structure | ctrl+f12 |
| 退回到前一个编辑的页面-back | ctrl+alt+← |
| 进入到下一个编辑的页面-forward | ctrl+alt+→ |
| 打开的类文件之间切换-select previous/next tab | alt+←/→ |
| 光标选中指定的类,查看继承树结构-Type Hierarchy | ctrl+h |
| 查看方法文档-quick documentation | ctrl+q |
| 类的UML关系图-show uml popup | ctrl+alt+u |
| 定位某行-go to line/column | ctrl+g |
| 回溯变量或方法的来源-go to implementation(s) | ctrl+alt+b |
| 折叠方法实现-collapse all | ctrl+shift+ - |
| 展开方法实现-expand all | ctrl+shift+ + |
查找、替换与关闭
| 说明 | 快捷键 |
|---|---|
| 查找指定的结构 | ctrl+f |
| 快速查找:选中的Word快速定位到下一个-find next | ctrl+l |
| 查找与替换-replace | ctrl+r |
| 直接定位到当前行的首位-move caret to line start | home |
| 直接定位到当前行的末位 -move caret to line end | end |
| 查询当前元素在当前文件中的引用,然后按 F3 可以选择 | ctrl+f7 |
| 全项目搜索文本-find in path … | ctrl+shift+f |
| 关闭当前窗口-close | ctrl+f4 |
调整格式
| 说明 | 快捷键 |
|---|---|
| 格式化代码-reformat code | ctrl+alt+l |
| 使用单行注释-comment with line comment | ctrl+/ |
| 使用/取消多行注释-comment with block comment | ctrl+shift+/ |
| 选中数行,整体往后移动-tab | tab |
| 选中数行,整体往前移动-prev tab | shift+tab |
Debug 快捷键
| 说明 | 快捷键 |
|---|---|
| 单步调试(不进入函数内部)- step over | F8 |
| 单步调试(进入函数内部)- step into | F7 |
| 强制单步调试(进入函数内部) - force step into | alt+shift+f7 |
| 选择要进入的函数 - smart step into | shift+F7 |
| 跳出函数 - step out | shift+F8 |
| 运行到断点 - run to cursor | alt+F9 |
| 继续执行,进入下一个断点或执行完程序 - resume program | F9 |
| 停止 - stop | Ctrl+F2 |
| 查看断点 - view breakpoints | Ctrl+Shift+F8 |
| 关闭 - close | Ctrl+F4 |
断点调试(Debug)
Debug 的步骤
- 添加断点
- 启动调试
- 单步执行
- 观察变量和执行流程,找到并解决问题
说明:在 Debug 过程中,可以动态的下断点。
行断点
断点打在代码所在的行上,执行到此行时,会停下来。

方法断点
断点设置在方法的签名上,默认当进入时,断点可以被唤醒。也可以设置在方法退出时,断点也被唤醒

在多态的场景下,在父类或接口的方法上打断点,会自动调入到子类或实现类的方法
字段断点
在类的属性声明上打断点,默认对属性的修改操作进行监控

条件断点

异常断点
对异常进行跟踪,如果程序出现指定异常,程序就会执行断点,自动停住。

线程调试

强制结束

常用插件
推荐1:Alibaba Java Coding Guidelines

阿里巴巴 Java 编码规范检查插件,检测代码是否存在问题,以及是否符合规范。
使用:在类中,右键,选择编码规约扫描,在下方显示扫描规约和提示。根据提示规范代码,提高代码质量。
推荐2:jclasslib bytecode viewer

可视化的字节码查看器。
使用:
- 在 IDEA 打开想研究的类。
- 编译该类或者直接编译整个项目(如果想研究的类在 jar 包中,此步可略过)。
- 打开“view” 菜单,选择“Show Bytecode With jclasslib” 选项。
- 选择上述菜单项后 IDEA 中会弹出 jclasslib 工具窗口。

推荐3:CodeGlance Pro

在编辑器右侧生成代码小地图,可以拖拽小地图光标快速定位代码,阅读行数很多的代码文件时非常实用。

推荐4:JavaDoc

按 alt+insert,执行操作:
