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-moduleuser-facade-moduleuser-hessian-module 等等,模块之间彼此可以相互依赖,有着不可分割的业务关系。

在一个 module 下,可以声明多个 package(包),一般命名规范如下:

  1. 不要有中文
  2. 不要以数字开头
  3. 给包取名时一般都是公司域名倒着写,而且都是小写
    • 比如:尚硅谷网址是:www.atguigu.com
    • 那么 package 包名应该写成:com.atguigu.子名字

代码模板

查看已有代码模版

Postfix Completion 模板(后缀补全)

Live Templates 模板(实时模板)

常用代码模板

非空判断:

  • 变量.nullif (变量 == null)
  • 变量.nnif (变量 != null)
  • 变量.notnullif (变量 != null)
  • ifnif (xx == null)
  • innif (xx != null)

遍历数组和集合:

  • 数组或集合变量.forifor 循环
  • 数组或集合变量.for:增强 for 循环
  • 数组或集合变量.forr:反向 for 循环
  • 数组或集合变量.iter:增强 for 循环遍历数组或集合

输出语句:

  • soutSystem.out.println
  • soutm:打印当前方法的名称
  • soutp:打印当前方法的形参及形参对应的实参值
  • soutv:打印方法中声明的最近的变量的值
  • 变量.sout:打印当前变量值
  • 变量.soutv:打印当前变量名及变量值

对象操作:

  • 创建对象
    • Xxx.new .var:创建 Xxx 类的对象,并赋给相应的变量
    • Xxx.new .field:会将方法内刚创建的 Xxx 对象抽取为一个属性
  • 强转
    • 对象.cast:将对象进行强转
    • 对象.castvar:将对象强转后,并赋给一个变量

静态常量声明:

  • psfpublic static final
  • psfipublic static final int
  • psfspublic static final String
  • prsfprivate 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$
    }
};

常用快捷键

提高编写速度-上

说明快捷键
智能提示-editalt+enter
提示代码模板-insert live templatectrl+j
使用 xx 块环绕-surround with …ctrl+alt+t
调出生成 getter/setter/构造器等结构-generate …alt+insert
自动生成返回值变量-introduce variable …ctrl+alt+v
复制指定行的代码-duplicate line or selectionctrl+d
删除指定行的代码-delete linectrl+y
切换到下一行代码空位-start new lineshift+enter
切换到上一行代码空位-start new line before currentctrl+alt+enter
向上移动代码-move statement upctrl+shift+↑
向下移动代码-move statement downctrl+shift+↓
向上移动一行-move line upalt+shift+↑
向下移动一行-move line downalt+shift+↓
方法的形参列表提醒-parameter infoctrl+p

提高编写速度-下

说明快捷键
批量修改指定的变量名、方法名、类名等-renameshift+f6
抽取代码重构方法-extract method …ctrl+alt+m
重写父类的方法-override methods …ctrl+o
实现接口的方法-implements methods …ctrl+i
选中的结构的大小写的切换-toggle casectrl+shift+u
批量导包-optimize importsctrl+alt+o

类结构、查找和查看源码

说明快捷键
如何查看源码-go to class…ctrl+选中指定的结构ctrl+n
显示当前类结构,支持搜索指定的方法、属性等-file structurectrl+f12
退回到前一个编辑的页面-backctrl+alt+←
进入到下一个编辑的页面-forwardctrl+alt+→
打开的类文件之间切换-select previous/next tabalt+←/→
光标选中指定的类,查看继承树结构-Type Hierarchyctrl+h
查看方法文档-quick documentationctrl+q
类的UML关系图-show uml popupctrl+alt+u
定位某行-go to line/columnctrl+g
回溯变量或方法的来源-go to implementation(s)ctrl+alt+b
折叠方法实现-collapse allctrl+shift+ -
展开方法实现-expand allctrl+shift+ +

查找、替换与关闭

说明快捷键
查找指定的结构ctrl+f
快速查找:选中的Word快速定位到下一个-find nextctrl+l
查找与替换-replacectrl+r
直接定位到当前行的首位-move caret to line starthome
直接定位到当前行的末位 -move caret to line endend
查询当前元素在当前文件中的引用,然后按 F3 可以选择ctrl+f7
全项目搜索文本-find in path …ctrl+shift+f
关闭当前窗口-closectrl+f4

调整格式

说明快捷键
格式化代码-reformat codectrl+alt+l
使用单行注释-comment with line commentctrl+/
使用/取消多行注释-comment with block commentctrl+shift+/
选中数行,整体往后移动-tabtab
选中数行,整体往前移动-prev tabshift+tab

Debug 快捷键

说明快捷键
单步调试(不进入函数内部)- step overF8
单步调试(进入函数内部)- step intoF7
强制单步调试(进入函数内部) - force step intoalt+shift+f7
选择要进入的函数 - smart step intoshift+F7
跳出函数 - step outshift+F8
运行到断点 - run to cursoralt+F9
继续执行,进入下一个断点或执行完程序 - resume programF9
停止 - stopCtrl+F2
查看断点 - view breakpointsCtrl+Shift+F8
关闭 - closeCtrl+F4

断点调试(Debug)

Debug 的步骤

  1. 添加断点
  2. 启动调试
  3. 单步执行
  4. 观察变量和执行流程,找到并解决问题

说明:在 Debug 过程中,可以动态的下断点。

行断点

断点打在代码所在的行上,执行到此行时,会停下来。

方法断点

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

在多态的场景下,在父类或接口的方法上打断点,会自动调入到子类或实现类的方法

字段断点

在类的属性声明上打断点,默认对属性的修改操作进行监控

条件断点

异常断点

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

线程调试

强制结束

常用插件

推荐1:Alibaba Java Coding Guidelines

阿里巴巴 Java 编码规范检查插件,检测代码是否存在问题,以及是否符合规范。

使用:在类中,右键,选择编码规约扫描,在下方显示扫描规约和提示。根据提示规范代码,提高代码质量。

推荐2:jclasslib bytecode viewer

可视化的字节码查看器。

使用:

  1. 在 IDEA 打开想研究的类。
  2. 编译该类或者直接编译整个项目(如果想研究的类在 jar 包中,此步可略过)。
  3. 打开“view” 菜单,选择“Show Bytecode With jclasslib” 选项。
  4. 选择上述菜单项后 IDEA 中会弹出 jclasslib 工具窗口。

推荐3:CodeGlance Pro

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

推荐4:JavaDoc

alt+insert,执行操作: