IDEA详解
IntelliJ IDEA 介绍
JetBrains 公司介绍
IDEA(https://www.jetbrains.com/idea/)是 JetBrains 公司的产品,公司旗下还有其它产品,比如:
- WebStorm:用于开发 JavaScript、HTML5、CSS3 等前端技术;
- PyCharm:用于开发 python
- PhpStorm:用于开发 PHP
- RubyMine:用于开发 Ruby/Rails
- AppCode:用于开发 Objective - C/Swift
- CLion:用于开发 C/C++
- DataGrip:用于开发数据库和 SQL
- Rider:用于开发.NET
- GoLand:用于开发 Go
IntelliJ IDEA 介绍
IDEA,全称 IntelliJ IDEA,是 Java 语言的集成开发环境,IDEA 在业界被公认为是最好的 java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE 支持、Ant、JUnit、CVS 整合、代码审查、创新的 GUI 设计等方面的功能可以说是超常的。
主要功能介绍
- 语言支持上:

- 其他支持:

主要优势(相较于Eclipse)
- 强大的整合能力。比如:Git、Maven、Spring 等
- 提示功能的快速、便捷
- 提示功能的范围广
- 好用的快捷键和代码模板 private static final psf
- 精准搜索
官网详细使用文档
https://www.jetbrains.com/help/idea/meet-intellij-idea.html
下载安装
过程
https://www.bilibili.com/video/BV16L4y1b75R?p=4
文件目录

- bin:容器,执行文件和启动参数等
- help:快捷键文档和其他帮助文档
- lib:idea 依赖的类库
- license:各个插件许可
- plugins:插件
bin目录

idea.vmoptions

- -Xms128m:16G内存的机器可尝试设置为-Xms512m (设置初始的内存数,增加该值可以提高 Java 程序的启动速度)
- -Xmx750m:16G内存的机器可尝试设置为-Xmx1500m (设置最大内存数,提高该值,可以减少内存 Garage 收集的频率,提高程序性能)
模块(Module)
- 在 Eclipse 中有Workspace(工作空间)和Project(工程)的概念,在 IDEA 中只有Project(工程)和Module(模块)的概念。这里的对应关系为:

- 从Eclipse 转过来的人总是下意识地要在同一个窗口管理 n 个项目,这在 IntelliJ IDEA 是无法做到的。IntelliJ IDEA 提供的解决方案是打开多个项目实例, 即打开多个项目窗口。即:一个Project 打开一个Window 窗口。
- 在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是Module。一个 Project可以有多个Module。目前主流的大型项目都是分布式部署的,结构都是类似这种多 Module 结构。

这类项目一般是这样划分的,比如:core Module、web Module、plugin Module、 solr Module 等等,模块之间彼此可以相互依赖。通过这些 Module 的命名也可以看出,他们之间都是处于同一个项目业务下的模块,彼此之间是有不可分割的业务关系的。
如果需要删除模块:
- 先打开Module Settings,将Module移除
- 再右击delete
常用配置
Appearance & Behavior
主题

窗体及菜单字体及大小

编辑区主题
IDEA 默认提供了几个编辑区主题,可以通过如下的方式进行选择。

如果想要更多的主题效果的话,可以到如下的网站下载: http://www.riaway.com/
下载以后,导入主题
- 方式一:file –> Manage IDE Settings —> import setttings –> 选中下载的主题 jar 文件 –> 一路确认 –> 重启。 重启以后,新主题会自动启用。
- 方式二:直接导入
Editor-General
鼠标滚轮修改字体大小

勾选此设置后,增加 Ctrl + 鼠标滚轮快捷键来控制代码字体大小显示。
自动导包功能

- Add unambiguous imports on the fly:自动导入不明确的结构
- Optimize imports on the fly:自动帮我们优化导入的包
显示行号和方法间的分隔符

- 如上图红圈所示,可以勾选 Show line numbers:显示行数。我建议一般这个要勾选上。
- 如上图红圈所示,可以勾选 Show method separators:显示方法分隔线。这种线有助于我们区分开方法,所以建议勾选上。
取消单行显示tabs

在打开很多文件的时候,IntelliJ IDEA 默认是把所有打开的文件名 Tab 单行显示的。但是我个人现在的习惯是使用多行,多行效率比单行高, 因为单行会隐藏超过界面部分Tab,这样找文件不方便。
Editor–Font
默认的字体/大小/行间距

Editor–Color Scheme
当前主题的字体/字体大小/字体行间距(可忽略)
如果当前主题不希望使用默认字体、字体大小、字体行间距,还可以单独设置:

当前主题控制台输出的字体及字体大小(可忽略)

代码中注释的字体颜色

- Doc Comment–Text:修改文档注释的字体颜色
- Block comment:修改多行注释的字体颜色
- Line comment:修改当行注释的字体颜色
Editor–Code Style
超过指定import个数,改为* (可忽略)

Editor–File and Code Templates
类头的文档注释信息

常用的预设的变量,这里直接贴出官网给的:
1 | ${PACKAGE_NAME} - the name of the target package where the new class or interface will be created. |
Editor–File Encodings
项目文件编码

说明:Transparent native-to-ascii conversion,主要用于转换 ascii,一般都要勾选, 不然 Properties 文件中的注释显示的都不会是中文。
当前源文件的编码(可忽略)


对单独文件的编码修改还可以点击右下角的编码设置区。如果代码内容中包含中文,则会弹出如上的操作选择。其中:
- Reload 表示使用新编码重新加载,新编码不会保存到文件中,重新打开此文件,旧编码是什么依旧还是什么。
- Convert 表示使用新编码进行转换,新编码会保存到文件中,重新打开此文件, 新编码是什么则是什么。
- 含有中文的代码文件,Convert 之后可能会使中文变成乱码,所以在转换成请做好备份,不然可能出现转换过程变成乱码,无法还原。
Build/Execution/Deployment
自动编译

- 构建就是以我们编写的 java 代码、框架配置文件、国际化等其他资源文件、 JSP 页面和图片等资源作为“原材料”,去“生产”出一个可以运行的项目的过程。
- Intellij Idea 默认状态为不自动编译状态,Eclipse 默认为自动编译。
省电模式(可忽略)

如上图所示,IntelliJ IDEA 有一种叫做省电模式的状态,开启这种模式之后 IntelliJ IDEA 会关掉代码检查和代码提示等功能。所以一般也可认为这是一种阅读模式,如果你在开发过程中遇到突然代码文件不能进行检查和提示,可以来看看这里是否有开启该功能。
代码水平或垂直显示

快捷键(Keymap)设置
设置为Eclipse的快捷键

通过快捷键功能修改快捷键设置

通过指定快捷键查看或修改其功能

导入已有的设置

关于模板(Templates)
- Editor,Live Templates
- Editor,General–Postfix Completion
Live Templates(实时代码模板)
它的原理就是配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高,同时也可以增加个性化。最简单的例子就是在 Java 中输入 sout 会出现 System.out.println();
官方介绍 Live Templates: https://www.jetbrains.com/help/idea/using-live-templates.html
已有的常用模板
- Postfix Completion 默认如下:

- Live Templates 默认如下:

二者的区别:Live Templates 可以自定义,而 Postfix Completion 不可以。同时,有些操作二者都提供了模板,Postfix Templates 较 Live Templates 能快 0.01 秒。
psvm
可生成 main 方法。
sout
System.out.println();
快捷输出
一些变形:
soutp=System.out.println("方法形参名 = " + 形参名);
soutv=System.out.println("变量名 = " + 变量);
soutm=System.out.println("当前类名.当前方法");
“abc”.sout => System.out.println("abc");
fori
可生成 for 循环。
一些变形:
- iter:可生成增强 for 循环
- itar:可生成普通 for 循环
list.for
可生成集合 list 的 for 循环。
List<String> list = new ArrayList<String>();
输入: list.for 即可输出
1 | for(String s:list){ |
一些变形:
- list.fori
- list.forr(倒序遍历)
ifn
可生成 if(xxx = null)
。
一些变形:
- inn:可生成 if(xxx != null)
- xxx.nn
- xxx.null
prsf
可生成 private static final
。
一些变形:
- psf:可生成
public static final
- psfi:可生成
public static final int
- psfs:可生成
public static final String
修改现有模板Live Templates
如果对于现有的模板,感觉不习惯、不适应的,可以修改。
- 例如
通过调用 psvm 调用 main 方法不习惯,可以改为跟 Eclipse 一样,使用 main 调取。

自定义模板
IDEA 提供了很多现成的 Templates,但也可以根据自己的需要创建新的Template。
- 选中自定义的模板组,点击”+”来定义模板

- 创建模版

- Abbreviation:模板的缩略名称
- Description:模板的描述
- Template text:模板的代码片段
- 应用范围
可以如上的方式定义个测试方法,然后在 java 类文件中测试即可。
类似的可以再配置如下的几个 Template:


关联数据库
步骤



表面上很多人认为配置 Database 就是为了有一个 GUI 管理数据库功能,但是,这并不是 IntelliJ IDEA 的 Database 最重要特性。数据库的 GUI 工具有很多,IntelliJ IDEA 的 Database 也没有太明显的优势。
IntelliJ IDEA 的 Database 最大特性就是对于 Java Web 项目来讲,常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 会自动识别 domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 domain 对象等。
常用操作

- 图标 1:同步当前的数据库连接。这个是最重要的操作。配置好连接以后或通过其他工具操作数据库以后,需要及时同步。
- 图标 2:配置当前的连接。
- 图标 3:断开当前的连接。
- 图标 4:显示相应数据库对象的数据。
- 图标 5:编辑修改当前数据库对象。
断点调试
常用断点调试快捷键
对于常用的 Debug 的快捷键,需要熟练掌握。

条件断点
说明:调试的时候,在循环里增加条件判断,可以极大的提高效率,心情也能愉悦。
具体操作:在断点处右击调出条件断点。可以在满足某个条件下,实施断点。
查看表达式的值(Ctrl + u):选择行,ctrl + u。还可以在查看框中输入编写代码时的其他方法。
其它设置
生成javadoc


缓存和索引的清理
IntelliJ IDEA 首次加载项目的时候,都会创建索引,而创建索引的时间跟项目的文件多少成正比。在 IntelliJ IDEA 创建索引过程中即使你编辑了代码也是编译不了、运行不起来的,所以还是安安静静等 IntelliJ IDEA 创建索引完成。
IntelliJ IDEA 的缓存和索引主要是用来加快文件查询,从而加快各种查找、代码提示等操作的速度,所以 IntelliJ IDEA 的索引的重要性再强调一次也不为过。 但是,IntelliJ IDEA 的索引和缓存并不是一直会良好地支持 IntelliJ IDEA 的,某些特殊条件下,IntelliJ IDEA 的缓存和索引文件也是会损坏的,比如:断电、 蓝屏引起的强制关机,当你重新打开 IntelliJ IDEA,很可能 IntelliJ IDEA 会报各种莫名其妙错误,甚至项目打不开,IntelliJ IDEA 主题还原成默认状态。即使没有断电、蓝屏,也会有莫名奇怪的问题的时候,也很有可能是 IntelliJ IDEA 缓存和索引出现了问题,这种情况还不少。遇到此类问题也不用过多担心。我们可以清理缓存和索引。如下:


- 一般建议点击 Invalidate and Restart,这样会比较干净。
- 上图警告:清除索引和缓存会使得 IntelliJ IDEA 的 Local History 丢失。所以如果你项目没有加入到版本控制,而你又需要你项目文件的历史更改记录,那你最好备份下你的 LocalHistory 目录。
- 通过上面方式清除缓存、索引本质也就是去删除系统盘下的 system 目录下的对应的文件而已,所以如果你不用上述方法也可以删除整个 system。当 IntelliJ IDEA 再次启动项目的时候会重新创建新的 system 目录以及对应项目缓存和索引。
取消更新

插件的使用
在 IntelliJ IDEA 的安装讲解中我们其实已经知道,IntelliJ IDEA 本身很多功能也都是通过插件的方式来实现的。
官网插件库:https://plugins.jetbrains.com/

常用插件推荐:
插件名称 | 插件介绍 | 官网地址 |
---|---|---|
Key promoter | 快捷键提示 | https://plugins.jetbrains.com/plugin/4455?pr=idea |
CamelCase | 驼峰式命名和下划线命名交替变化 | https://plugins.jetbrains.com/plugin/7160?pr=idea |
CheckStyle-IDEA | 代码样式检查 | https://plugins.jetbrains.com/plugin/1065?pr=idea |
FindBugs-IDEA | 代码 Bug 检查 | https://plugins.jetbrains.com/plugin/3847?pr=idea |
Statistic | 代码统计 | https://plugins.jetbrains.com/plugin/4509?pr=idea |
JRebel Plugin | 热部署 | https://plugins.jetbrains.com/plugin/?id=4441 |
CodeGlance | 在编辑代码最右侧,显示一块代码小地图 | https://plugins.jetbrains.com/plugin/7275?pr=idea |
Eclipse Code Formatter | 使用 Eclipse 的代码格式化风格,在一个团队中如果公司有规定格式化风格,这 个可以使用 | https://plugins.jetbrains.com/plugin/6546?pr=idea |
GsonFormat | 把JSON字符串直接实例化成类 | https://plugins.jetbrains.com/plugin/7654?pr=idea |