IntelliJ IDEA作为开发神器,尤其在开发Java语言上可谓一骑绝尘,所谓”工欲善其事,必先利其器”,熟练使用IntelliJ IDEA对开发效率和源码调试有质的提升,IntelliJ IDEA是打开源码调试的第一道门。下图是Intellij IDEA 2020.3.1 版本的界面,下面将一一解释标注数字的职责。
3F84C5F3-DE55-43FD-9CD0-0A8148866119.png
标识1:Project用于显示项目目录结构。
标识2:Commit用于显示git提交记录。
标识3:Pull Requests用于显示git推送请求记录。
标识4:用于显示当前类的类结构。
标识5:
标识6:JRebel的菜单。JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响,简单来说JRebel提供了热部署的功能能大大提升开发效率。因为我安装了JRebel插件所以才会有JRebel菜单。
标识7:Git菜单。
标识8:当运行可执行文件的控制台,例如运行一个Java类,Run控制台会显示运行类时的相关信息。
标识9:待办事项菜单。
标识10:Problems(问题)用于显示当前文件提示的一些问题,例如警告信息等等。
标识11:Terminal(终端)菜单,跟普通电脑打开终端是一样的。
标识12:Profiler
标识13:
标识14:
标识15:
标识16:显示当前项目所处git分支。
标识17:运行当前文件。
标识18:
标识19:
标识20:
标识21:
标识22:
标识23:
标识24:
标识25:
标识26:
标识27:
标识28:
标识29:
标识30:
标识31:
标识32:
标识33:
标识34:
标识35:

1.IDEA 常用快捷键(Mac)

作用 快捷键
打开智能提示 option + enter
注释当前行或取消注释当前行 command + /
注释多行或取消注释多行 option + command + /
格式化代码 option + command + l
打开生成代码提示,例如生成构造、setter、getter、toString方法 command + n
跳转到类、方法、变量声明处 command + 鼠标点击类、方法、变量
跳转到接口的实现类 option + command + b
复制当前行,并粘贴到下一行 command + d
删除当前行 command + delete
剪切当前行 command + x
打开搜索功能 按两下shift键 或 鼠标点击idea界面右上角的搜索图标
手动补全 option + /
当前文件查找关键字,局部搜索 command + f
当前项目查找关键字,全局搜索 shift + command + f
进行代码重构:
1.选中文件名、按快捷键后,可以重命名文件名(同时修改类名)
2.选中代码中的变量名、类名、方法名,按快捷键后,可以统一修改。
shift + fn + f6
将选中的代码提交到一个方法中 option + command + m
折叠代码 command + -
展开代码 command + +

2.IDEA 调试

在.class文件打上断点以Debug模式运行,就会出现如下图,下图主要分为左侧导航、上方导航、Frames(框架)部分、Variables(变量)部分、Watches(监视器)部分五个部分。
11111.png

左侧导航部分:左侧导航部分分为10个按钮。按钮1用于重新运行当前可执行文件(上图是一个class)。按钮4用于配置运行类的配置信息,例如设置环境变量、运行参数等等。按钮5用于恢复程序,如果有多个断点,点击此按钮会跳转到下一个断点,如果只有一个断点就恢复执行。按钮6用于暂停执行。按钮7用于查看线程堆。

上方部分:上方部分分为8个按钮组成,这8个按钮是调试步骤的核心。

  • Show Execution Point(显示执行点):如果你的光标在其它行或其它页面,点击此按钮可以使光标定位到当前执行行。
  • Step Over (F8):步过,一行一行地往下走,如果执行行上有方法不会进入方法。
  • Step Into (F7):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。
  • Force Step Into (Alt + Shift + F7):强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
  • Step Out (Shift + F8):步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。
  • Drop Frame (默认无):回退断点,后面章节详细说明。
  • Run to Cursor (Alt + F9):运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。
  • Evaluate Expression (Alt + F8):计算表达式。计算表达式可以在调试过程中计算某个表达式的值,而不用再去打印信息。

Variables部分用于显示当前类的变量。当Debug运行时参数所在行后面会显示当前变量的值,也可以悬浮在参数上,显示当前变量信息。

Watches部分用于监视变量。你可以在Watches部分输入需要查看的变量,如果要监视Variables中的变量拖拽到Watches面板即可。
zxzxzxzxp.gif
(Watches 监视变量)

1.1 Evaluate Expression(计算表达式)

计算表达式(Alt+F8)主要有两个作用,第一计算表达式的值,这个表达式不仅可以是一般变量或参数,也可以是方法,当你的一行代码中调用了几个方法时,就可以通过这种方式查看查看某个方法的返回值。 第二是设置变量的值。
ooooooo.gif
(计算条件表达式、计算方法的结果)

yyyyyyy.gif
(设置变量的值)

1.2 智能步入

1.3 断点条件设置

1.4 多线程的调试

3.IDEA 常用插件

插件名 作用
Lombok 通过注解的形式生成构造、getter、setter、toString方法,简化开发
MyBatisX MyBatisX使得Mapper接口跳转Mapper.xml就跟吃饭一样容易
JReble 热部署插件,修改代码无需重新启动就能生效
TranslationPlugin 翻译插件,无需为命名而头疼
BackgroundImagePlus 自定义IDEA背景图
Alibaba Java Coding Guidelines 一款阿里巴巴公司试行的开发设计规范~
FindBugs FindBugs静态代码检查插件,可以检查你代码中的隐患,并给出原因。
SequenceDiagram 可以根据代码调用链路自动生成时序图,研究源码的神器
Java Stream Debugger 它可以将 Stream 的操作步骤可视化,非常有助于我们的学习
Codota 支持智能代码自动提示,该功能可以增强 IDEA 的代码提示功能。
支持 JDK 和知名第三方库的函数的使用方法搜索,可以看到其他知名开源项目对该函数的用法。
jclasslib bytecode viewer 查看字节码可视化插件

4.IDEA 连接数据库

5.IDEA智能提示

利用好IDEA提供的智能提示能大幅度开发效率(少写代码)。

1.快速生成for循环

fori可以快速生成for循环,如下图:
1111.gif
集合.for可以快速生成forEach,如下图:
222.gif
集合.forr可以快速生成倒叙的fori循环,它们的执行效率为(从快到慢):fori倒叙 > fori正序 > forEach,如下图:
333.gif

2.快速判断生成判空语句

变量.null快速生成变量等于null的if语句,如下图:
444.gif
变量.notnull快速生成变量不等于null的if语句,如下图:
555.gif
变量.nn快速生成变量不等于null的if语句,是.notnull的简写,如下图:
6.gif

3.布尔类型取正和取反

布尔变量.if取正,如下图:
777.gif
!布尔变量:.if取反,如下图:
88.gif

4.定义变量

类型.new可以快速生成new 类型()语句,如下图:
999.gif
.val可以快速生成一个变量,如下图:
100000.gif
.var可以快速生成一个以var声明的变量(因为我这里使用的是JDK8,JDK8不支持var关键字,所以.var与.val的效果是一样的),如下图:
10001.gif
.field可以在类中声明一个成员字段,如下图:
10002.gif

5.快速生成synchronized代码块

变量名.synchronized可以快速生成synchronized代码块,如下图:
10003.gif

6.快速生成try catch异常捕获语句

方法名().try快速生成try catch异步捕获语句,如下图:
10005.gif

7.强制转换

变量名.cast可以快速生成转换语句,如下图:
10006.gif
变量名.castvar可以快速生成转换和定义变量语句,如下图:
Jietu20210401-152459-HD.gif

8.自定义智能提示

QQ20210401-153304@2x.png
0002.jpg
表达式为:

  1. List<$EXPR$> $END$=new ArrayList();

测试:
0003.gif