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.println
soutm
:打印当前方法的名称soutp
:打印当前方法的形参及形参对应的实参值soutv
:打印方法中声明的最近的变量的值变量.sout
:打印当前变量值变量.soutv
:打印当前变量名及变量值
对象操作:
- 创建对象
Xxx.new .var
:创建 Xxx 类的对象,并赋给相应的变量Xxx.new .field
:会将方法内刚创建的 Xxx 对象抽取为一个属性
- 强转
对象.cast
:将对象进行强转对象.castvar
:将对象强转后,并赋给一个变量
静态常量声明:
psf
:public static final
psfi
:public static final int
psfs
:public static final String
prsf
: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
,执行操作: