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)

  1. 强大的整合能力。比如:Git、Maven、Spring 等
  2. 提示功能的快速、便捷
  3. 提示功能的范围广
  4. 好用的快捷键和代码模板 private static final psf
  5. 精准搜索

官网详细使用文档

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)

  1. 在 Eclipse 中有Workspace(工作空间)和Project(工程)的概念,在 IDEA 中只有Project(工程)和Module(模块)的概念。这里的对应关系为:
  1. 从Eclipse 转过来的人总是下意识地要在同一个窗口管理 n 个项目,这在 IntelliJ IDEA 是无法做到的。IntelliJ IDEA 提供的解决方案是打开多个项目实例, 即打开多个项目窗口。即:一个Project 打开一个Window 窗口。
  2. 在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是Module。一个 Project可以有多个Module。目前主流的大型项目都是分布式部署的,结构都是类似这种多 Module 结构。

这类项目一般是这样划分的,比如:core Module、web Module、plugin Module、 solr Module 等等,模块之间彼此可以相互依赖。通过这些 Module 的命名也可以看出,他们之间都是处于同一个项目业务下的模块,彼此之间是有不可分割的业务关系的

如果需要删除模块:

  1. 先打开Module Settings,将Module移除
  2. 再右击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
2
3
4
5
6
7
8
9
10
11
12
13
14
${PACKAGE_NAME} - the name of the target package where the new class or interface will be created. 
${PROJECT_NAME} - the name of the current project.
${FILE_NAME} - the name of the PHP file that will be created.
${NAME} - the name of the new file which you specify in the New File dialog box during the file creation.
${USER} - the login name of the current user.
${DATE} - the current system date.
${TIME} - the current system time.
${YEAR} - the current year.
${MONTH} - the current month.
${DAY} - the current day of the month.
${HOUR} - the current hour.
${MINUTE} - the current minute.
${PRODUCT_NAME} - the name of the IDE in which the file will be created.
${MONTH_NAME_SHORT} - the first 3 letters of the month name. Example: Jan, Feb, etc. ${MONTH_NAME_FULL} - full name of a month. Example: January, February, etc.

Editor–File Encodings

项目文件编码

说明:Transparent native-to-ascii conversion,主要用于转换 ascii,一般都要勾选, 不然 Properties 文件中的注释显示的都不会是中文。

当前源文件的编码(可忽略)

对单独文件的编码修改还可以点击右下角的编码设置区。如果代码内容中包含中文,则会弹出如上的操作选择。其中:

  1. Reload 表示使用新编码重新加载,新编码不会保存到文件中,重新打开此文件,旧编码是什么依旧还是什么。
  2. Convert 表示使用新编码进行转换,新编码会保存到文件中,重新打开此文件, 新编码是什么则是什么。
  3. 含有中文的代码文件,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
2
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。

  • 选中自定义的模板组,点击”+”来定义模板
  • 创建模版
  1. Abbreviation:模板的缩略名称
  2. Description:模板的描述
  3. Template text:模板的代码片段
  4. 应用范围

可以如上的方式定义个测试方法,然后在 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