Intellij Idea - 快速指南


Intellij Idea - 简介

IntelliJ 是最强大、最流行的 Java 集成开发环境 (IDE) 之一。它由JetBrains开发和维护,并作为社区版和终极版提供。这个功能丰富的 IDE 可实现快速开发并有助于提高代码质量。

什么是 IDE 及其优点?

IDE 代表集成开发环境。它是多种工具的组合,使软件开发过程更加简单、健壮且不易出错。与纯文本编辑器相比,它具有以下优点 -

  • 与有用的工具集成,如编译器、调试器、版本控制系统、构建工具、各种框架、应用程序分析器等。

  • 支持代码导航、代码完成、代码重构和代码生成功能,从而加快开发过程。

  • 通过插件支持单元测试、集成测试和代码覆盖率。

  • 提供丰富的插件,进一步增强IDE功能。

IntelliJ 的特点

IntelliJ IDEA 具有一些最高效的 Java 代码完成功能。它的预测算法可以准确地假设编码员正在尝试输入的内容,并为他完成输入,即使他不知道特定类、成员或任何其他资源的确切名称。

深刻洞察

IntelliJ IDEA 真正理解并深入了解您的代码以及编码器的上下文,这使得它在其他 Java IDE 中如此独特。

  • 智能代码完成- 它支持基于上下文的代码完成。它给出了适用于当前上下文的最相关符号的列表。

  • 链码完成- 这是一种高级代码完成功能,列出了当前上下文中可通过方法或 getter 访问的适用符号。

  • 静态成员的完成- 它允许您使用静态方法或常量并自动添加所需的导入语句以避免编译错误。

  • 检测重复项- 它动态查找重复的代码片段并向用户提供有关它的通知/建议。

  • 检查和快速修复- 每当 IntelliJ 检测到您将要犯错误时,同一行上就会弹出一个小灯泡通知。单击它会显示建议列表。

开发人员人体工程学

IntelliJ IDEA 的设计围绕这样的编码原则:应允许开发人员在尽可能少的干扰下编写代码。这就是为什么在这种情况下,编辑器是屏幕上唯一可见的东西,并具有用于所有其他与编码无关的功能的专用快捷方式。

  • 以编辑器为中心的环境- 快速弹出窗口有助于检查附加信息,而无需离开当前上下文。

  • 一切快捷键- IntelliJ IDEA 几乎为一切提供键盘快捷键,包括工具窗口之间的快速选择和切换等等。

  • 内联调试器- 内联调试器允许您在 IDE 本身中调试应用程序。它使开发和调试过程变得无缝。

内置开发者工具

为了帮助开发人员组织他们的工作流程,IntelliJ IDEA 为他们提供了一个令人惊叹的工具集,其中包括反编译器、Docker 支持、字节码查看器、FTP 和许多其他工具 -

  • 版本控制- IntelliJ 支持大多数流行的版本控制系统,如 Git、Subversion、Mercurial、CVS、Perforce 和 TFS。

  • 构建工具- IntelliJ 支持 Java 和其他构建工具,如 Maven、Gradle、Ant、Gant、SBT、NPM、Webpack、Grunt 和 Gulp。

  • 测试运行器和代码覆盖率- IntelliJ IDEA 可让您轻松执行单元测试。IDE 包括主要测试框架的测试运行器和覆盖工具,包括 JUnit、TestNG、Spock、Cucumber、ScalaTest、spec2 和 Karma。

  • 反编译器- IntelliJ 附带了一个针对 Java 类的内置反编译器。当您想查看没有源代码的库时,您可以在不使用任何第三方插件的情况下完成。

  • 终端- IntelliJ 提供内置终端。根据您的平台,您可以使用命令行提示符,例如 PowerShell 或 Bash。

  • 数据库工具- IntelliJ 提供数据库工具,允许您连接到实时数据库;运行查询;浏览和更新数据;甚至可以从 IDE 本身的可视化界面中管理您的架构。

  • 应用程序服务器- IntelliJ 支持主要的应用程序服务器:Tomcat、JBoss、WebSphere、WebLogic、Glassfish 等。您可以将工件部署到应用程序服务器上,并在 IDE 本身中调试已部署的应用程序。

  • Docker 支持- 通过单独的插件,IntelliJ 提供了一个专用的工具窗口,可让您连接到本地运行的 Docker 计算机。

旗舰版与社区版的比较

终极版旨在协助 Web 和企业开发,而社区版则专为 JVM 和 Android 开发而设计。让我们考虑一些重要的观点,这将有助于我们理解两个版本之间的比较 -

特征 终极版 社区版
执照 商业的 开源,Apache 2.0。用于商业开发。
Java、Kotlin、Groovy、Scala 支持的 支持的
安卓开发 支持的 支持的
Maven、Gradle、SBT 支持的 支持的
Git、SVN、Mercurial、CVS 支持的 支持的
检测重复项 支持的 不支持
佩弗斯、TFS 支持的 不支持
JavaScript、打字稿 支持的 不支持
Java EE、Spring、GWT、Vaadin、Play、Grails、其他框架 支持的 不支持
数据库工具、SQL 支持的 不支持

Intellij Idea - 安装与配置

在本章中,我们将了解如何安装和配置 IntelliJ IDEA。该过程的第一步从选择版本开始。根据您的要求,您可以下载社区版或终极版。顾名思义,社区版是完全免费的,我们也可以将其用于商业开发。不过,终极版是付费版本,我们可以免费评估30天。

在 Windows 上安装

IntelliJ 与 2003 年之前的几乎所有 Windows 版本兼容。完整列表为:Windows 10/8/7/Vista/2003/XP。建议您在 Windows 上安装 IntelliJ 之前关闭所有其他应用程序。

系统要求

  • 为了实现无缝性能,建议至少使用 2 GB RAM 容量。

  • 为了获得更好的可视化效果,建议使用 1024x768 屏幕分辨率。

  • 至少 300 MB 磁盘空间用于安装,另外 1 GB 用于缓存。

下载与安装

  • 下载- 您可以从其官方网站下载 Windows 安装程序。

  • 安装- 让我们从安装开始,然后是配置步骤。IntelliJ 的安装与其他软件包类似。只需双击安装程序并按照屏幕上的说明即可完成安装过程。

在 Linux 上安装

在Linux平台上安装IntelliJ,需要注意的是,没有捆绑32位JDK,因此建议使用64位系统。

系统要求

  • GNOME、KDE ​​或 XFCE 桌面环境

  • 建议至少 2 GB RAM 以实现无缝使用

  • 300 MB 磁盘空间用于安装,另外 1 GB 用于缓存

  • 为了获得更好的可视化效果,建议使用 1024x768 屏幕分辨率

下载与安装

  • 下载- 您可以从其官方网站下载 IntelliJ for Linux。

  • 安装- 我们已经下载了 tar.gz 包。请注意,在我们的示例中,捆绑包的名称是 ideaIC-2017.2.5.tar.gz。它可能会随版本/版本而变化。请使用适当的捆绑包名称。

First extract it using following command:
$ tar xvf ideaIC-2017.2.5.tar.gz
It will create new directory with idea-IC-172.4343.14 name. 
Now change directory to idea-IC-172.4343.14/bin/ and execute idea.sh shell script as shown below:
$ cd idea-IC-172.4343.14/bin/
$ ./idea.sh
Follow on-screen instructions to complete installation procedure.

配置 IntelliJ

两个平台上的配置步骤相似。要开始配置,请启动 IntelliJ 应用程序。或者,您可以从此向导导入现有配置。单击下一步按钮继续。

步骤1 - 如果您使用的是终极版,则会弹出许可证激活窗口。选择免费评估选项,然后单击评估按钮,如下图所示。

许可证激活

步骤 2 - 接受许可协议以继续并按照屏幕上的说明启动 IntelliJ。您将看到 IntelliJ 的欢迎屏幕。

步骤 3 - 现在,是时候使用 IntelliJ 配置 Java 开发工具包(下文中,我们将其称为 JDK)了。如果尚未安装 JDK,请按照此处的说明进行操作

  • 在欢迎屏幕上,单击“配置”

  • 从下拉列表中选择“项目默认值”

  • 选择“项目结构”选项

项目结构
  • 从“平台设置”菜单中选择“SDK”选项。

  • 单击“加号”图标并选择“JDK”选项。

  • 选择 JDK 的主目录并按照屏幕上的说明进行操作。

平台设置

Intellij Idea - 熟悉

在本章中,我们将更加熟悉 IntelliJ IDEA。要讨论任何工具的优点和功能,必须熟悉该工具,IntelliJ 也不例外。

本章为您提供 IntelliJ 的概述。本章首先讨论 IDE 的可视元素、配置设置,最后讨论 JVM 和平台属性。

视觉元素

IDE 的重要特征之一是它的视觉元素。识别和理解视觉元素使您能够以更快、更轻松的方式采取行动。下面的截图和上面的标签显示了IntelliJ的主界面。

视觉元素
  1. 菜单栏- 菜单栏提供用于创建新项目的选项以及与项目相关的其他重要操作,例如代码重构、构建、运行、调试、版本控制选项等。

  2. 工具栏- 工具栏提供编译、调试和运行选项的快捷方式。您可以根据您的要求进行定制。

  3. 导航栏- 导航栏可以在项目中更轻松地导航。随着代码库的增加,此功能会变得很方便。

  4. 工具选项卡- 工具选项卡显示在主窗口的两侧。从这里,您可以访问数据库等重要工具;Maven/Ant 构建等。

  5. 项目透视图- 项目透视图窗口显示项目的各种元素,如包、模块、类、外部库等。

  6. 编辑器窗口- 这是开发人员花费大部分时间的地方。编辑器窗口允许您使用语法突出显示和其他有用的功能来编辑/编写代码。

主窗口底部有一个状态栏,显示有关文件的一些附加属性 - 例如其格式和编码类型。它还提供了切换当前文件的只读属性的选项。您还可以从这里管理检查级别。

使用插件

插件有助于扩展 IntelliJ 的功能。它提供了大量的插件,包括数据库、版本控制、分析等等。

插件范围

管理插件的步骤

请按照以下步骤管理插件 -

  • 转到文件→设置菜单。

  • 选择左侧窗格中的插件选项卡。

  • 该窗口列出了所有已安装的插件。每个插件名称的右侧都有一个复选框。切换该复选框可启用/禁用插件。

  • IntelliJ 在线插件存储库可在此处获取。要添加/删除插件存储库,请单击浏览存储库按钮,它将提供执行所需操作的方法。

  • 除此之外,它还允许离线插件安装。为此,请下载插件并从磁盘按钮选择安装插件,然后导航到下载路径。

要对插件执行其他操作(例如卸载、更新和排序),请右键单击任何插件。它将显示一个下拉菜单,您可以从中选择其中一项操作。

使用设置

本节提供了一些管理设置的重要提示。它使您能够导入、导出和共享 IntelliJ 设置。

导出设置

它允许将当前设置导出为 jar 文件。

  • 转到文件 → 导出设置。

  • 导出设置窗口列出了与 UI、调试器、SDK 等相关的可用设置。

  • 它提供了一个用于选择的复选框。选择完成后,单击“确定”按钮将设置保存到本地磁盘。

导入设置

它允许导入存储在 jar 文件中的设置。

  • 转到文件 → 导入设置。
  • 通过导航文件夹结构选择设置 jar
  • 单击“确定”按钮。

共享设置

IntelliJ IDEA 允许您在不同实例之间共享 IDE 设置。当您想要在团队或组织内应用相同的设置时,这特别有用。前提是启用设置存储库插件。默认情况下已安装并启用它。

确保其地位 -

  • 转到文件→设置→插件

  • 搜索设置存储库插件

我们可以将当前设置存储在 GitHub/Bitbucket 上并将其应用到其他实例上。存储当前设置 -

  • 转到文件 → 设置存储库。

  • 在上游 URL 对话框中输入 Git 存储库 URL。

  • 单击覆盖远程按钮。

  • 要将相同的设置应用于其他实例,请单击覆盖本地按钮。

配置 JVM 选项和平台属性

我们可以通过导航到“帮助”→“编辑自定义 VM 选项”菜单来配置 JVM 选项。以下是我们可以设置的一些重要的 JVM 选项。

  • –server - 它允许选择 Java HotSpot Server VM

  • -Xms<size> - 它设置初始Java堆大小。默认值为 128 MB。

  • -Xmx<size> - 它设置最大Java堆大小。默认值为 750 MB。

  • -Xss<size> - 它设置Java线程堆栈大小。

  • –XX - 它允许设置 GC 算法和其他属性。

Intellij Idea - 创建第一个 Java 项目

现在是我们亲身体验 IntelliJ 的时候了。在本章中,我们将创建我们的第一个 Java 项目。我们将编写并执行传统的Hello World程序。本章介绍Java应用程序的编译和运行。

创建项目

对于与开发相关的任何内容,开发人员必须使用 IntelliJ 创建一个新项目。让我们按照以下步骤创建一个项目 -

  • 启动 IntelliJ。

  • 转到文件 → 新建 → 项目菜单。

  • 选择 Java 项目和适当的 SDK,然后单击“下一步”按钮。

Java项目
  • 如果要使用 main 方法创建 Java 类,请从模板复选框中选择“创建项目”。

  • 从如下所示的对话框中选择命令行应用程序并继续。

  • 输入项目名称和目录位置。

  • 单击“完成”按钮。

创建包

包是在Java项目下创建的,可以单独创建,也可以在创建类的同时创建。让我们按照以下步骤创建一个包 -

  • 转到项目视角。

  • 右键单击“项目”,选择“新建”->“模块”选项。

项目视角
  • 新模块窗口将与新项目类似。选择 Java 选项和适当的 SDK,然后单击“下一步”按钮。

  • 输入模块名称。

  • 单击“完成”按钮。

创建Java类

在本节中,我们将学习如何创建 Java 类。可以在 Java 模块下创建 Java 类。按照以下步骤创建模块 -

  • 转到项目视角。

  • 展开 Project 并从模块中选择src目录。

  • 右键单击它;选择新建->Java类选项。

  • 在对话框中输入类名,然后单击“确定”按钮。

  • 它将打开带有类声明的编辑器窗口。

运行Java应用程序

我们现在将了解如何运行 Java 应用程序。请按照以下步骤操作,看看它是如何运行的 -

  • 让我们编写一个简单的代码,它将在控制台上打印一条消息。在编辑器窗口中输入以下代码 -

public class HelloWorld { 
   public static void main(String[] args) { 
      System.out.println("Hello, World !!!"); 
   } 
}
  • 转到“运行”菜单并选择“运行”选项。

  • 选择类名称并单击“运行”。

  • 如果没有编译错误,那么它将在窗口底部显示输出。

Java应用程序

Intellij Idea - 深入探讨

本教程的前四章旨在为初学者提供 IntelliJ 的基本概述。本节深入探讨 IntelliJ 并讨论有关项目、其格式以及其他内容的更多信息。

了解项目

项目是您正在开发的应用程序或软件。它可以包含多个模块、类、库、配置等。它是层次结构中最顶层的元素。

了解模块

模块具有“项目”下方的一级。模块是一个独立的实体,可以独立于其他模块进行编译、调试和运行。单个项目可以包含多个模块。您可以随时在项目中添加或删除模块。

除此之外,我们还可以导入现有的模块。按照以下步骤导入现有模块 -

  • 转到文件 → 项目结构。
  • 选择模块并单击加号图标。
  • 它将显示导入模块的选项。
模块特点

了解文件夹

内容根目录是一个包含组成模块的所有文件的文件夹。一个模块可以有多个内容文件夹。文件夹分为以下类型 -

  • Sources - 通过将此类别分配给文件夹,我们指示 IntelliJ 该文件夹及其子文件夹包含 java 源代码,并且应该将其作为编译过程的一部分进行编译。

  • 测试- 通过将此类别分配给文件夹,我们指示 IntelliJ 它是单元测试的位置。此文件夹可以访问 Sources 文件夹中的类。

  • 资源- 它代表项目中使用的各种资源文件,例如图像、XML 和属性文件。在编译过程中,该文件夹的内容将按原样复制到输出文件夹。

  • 已排除- 已排除文件夹中的内容将不会被 IntelliJ 索引。这意味着 IntelliJ 将不会提供代码完成建议和其他提示。例如,默认排除输出目录和目标目录。

  • 测试资源- 这与用于单元测试的资源类似。

内容根

了解图书馆

库是不同类的汇编。库实现了代码的可重用性。在 Java 中,库可以包含在 ZIP、Jar 或简单的文件夹中。我们可以在三个不同的级别定义库。这些级别是全局、项目和模块级别。

  • 全球级别- 由所有项目共享。

  • 项目级别- 由项目的所有模块共享。

  • 模块级别- 由这些模块的类共享。

了解方面

Facets 是模块的扩展。他们增加了对框架和技术的支持。当向模块添加构面时,IntelliJ 会识别它添加了支持。例如,编辑器中的提示和帮助、窗口栏中的新工具、依赖下载等。您可以从“文件”→“项目结构”窗口添加构面,如下所示 -

窗栏

文物

工件是项目的输出。它可以是简单的 JAR 文件、Java EE 应用程序或 Java EJB 应用程序。如果我们使用 Gradle 或 Maven 等外部构建工具,那么 IntelliJ 会自动为它们添加工件。可以通过导航到文件 → 项目结构来创建工件,如下所示 -

文物

导入现有项目

在本节中,我们将了解如何导入现有项目。我们可以通过两种方式导入项目 -

  • 从现有源导入
  • 从构建模型导入它。

目前支持Gradle和Maven构建工具。导入项目 -

  • 从现有源导航到文件 → 新建 → 项目。
  • 选择现有项目的目录、Maven 的 pom.xml 或 Gradle 的构建脚本。
  • 单击“确定”按钮。
导入现有项目

项目格式

IntelliJ 支持两种类型的项目格式,一种是基于目录的,另一种是基于文件的。基于目录的格式是推荐的较新格式。默认情况下,IntelliJ 创建基于目录的项目格式。您可以在创建新项目时选择项目格式。在新项目窗口中,只需单击更多设置,如下图所示 -

项目格式

基于目录的项目格式

这种格式有助于在项目中创建一个 idea 文件夹,并将所有配置文件保存在该文件夹中。设置被分组到 xml 文件中。例如,它将创建misc.xml、modules.xml、workspace.xml等。以下屏幕截图将帮助您了解其工作原理 -

基于目录的项目格式

基于文件的项目格式

它将创建两个扩展名为..iprwpr 的项目文件。ipr 文件将包含特定于项目的设置,wpr 文件将包含特定于工作区的设置。

基于文件的项目格式

要将基于文件的项目转换为基于目录的项目,请转到文件 → 另存为基于目录的格式

基于目录与基于文件的项目格式

与基于文件的项目格式相比,基于目录的项目格式将设置存储在具有有意义名称的单独文件夹中。其他差异是 -

  • 相关设置存储在单个文件中,可以更轻松地以基于目录的项目格式进行管理。

  • 如果文件夹包含 idea 子文件夹,则 IntelliJ 会识别该项目。因此,您没有明确选择 ipr 项目。

  • 基于目录的项目格式将设置分解为多个文件,因此更容易选择特定类型的设置来存储在版本控制系统中。

Intellij Idea - 深入了解编辑器

编辑器是开发人员花费大部分时间的区域。掌握编辑器是提高任何资源生产力的第一步。本章讨论编辑器的视觉元素、最常见的编辑器操作和提供 lint 检查的SonarLint插件。

编辑器的视觉元素

IntelliJ 有许多规定,其中包括旨在帮助开发人员浏览和了解其编码的真实状态的视觉元素。

现在让我们看一下不同的规定 -

天沟面积

编辑器的装订线区域位于 IDE 的左侧,如下图所示 -

天沟面积

标签

我们现在将了解标签的工作原理。上面的截图是用数字标记的。我们现在将看看数字必须显示什么 -

  • 在这里我们可以看到行号以及其他有用的选项。如果你仔细观察类名和主方法之前有一个绿色的小三角形。它提供了运行、调试和覆盖运行应用程序的选项。只需单击三角形图标,它就会提供选项。

  • 您可以在第 6 行看到小加号。这是代码折叠功能。如果您单击该图标,它将展开它。代码折叠可以在类、方法、循环和其他块级别完成。

  • 在第 11 行和第 14 行,有 2 个相互指向的箭头。标记代表方法的开始和结束位置。如果单击任何箭头,它将对该代码块执行折叠操作。当执行某些操作时,Gutter区域会显示各种符号;例如,它将显示断点符号、Java 注释。

状态栏

编辑器窗口的底部有一个状态栏,显示当前文件和项目状态的信息。

事件日志 状态栏
  • 第一张图中,16:1 分别代表当前行号和列号。

  • 接下来是行分隔符,对于 UNIX 和 mac OS,它是 \n,对于 Windows,它是 \r。

  • UTF-8代表文件编码。

  • 接下来是图标。我们可以通过单击文件来切换文件的只读属性。

  • 最后,有一个带有男人面孔的符号。它允许管理代码检查级别。

    • 当我们在编辑器中键入代码时,IntelliJ 会动态检查代码并显示提示/建议。我们可以从这里决定检查级别。例如,我们可以完全禁用它或仅允许检查语法等。

    • 我们还可以从这里启用省电模式,这将禁用后台代码分析和其他后台作业。

  • 状态栏还显示有关项目操作的信息。例如,第二张图片显示有关项目编译的信息。

划痕

IntelliJ 提供了一个临时编辑器。您可以创建文本或代码段,而无需修改当前项目结构。它提供两种类型的临时文件 -

暂存文件

它们具有功能性、可运行性和可调试性。创建临时文件 -

  • 转到文件→新建→临时文件。

  • 选择您选择的语言。

  • 它将在 IntelliJ-Installation-Directory\ config \scratches 文件夹中创建一个文件。

暂存缓冲区

这仅用于创建任何文本。创建临时缓冲区 -

  • 按 Ctrl + Shift + A 或单击“搜索无处不在”图标

  • 它将弹出对话框。

  • 在该框中输入新的暂存缓冲区文本,然后按 Enter 键。

  • 它将在编辑器窗口中打开临时缓冲区。

与暂存文件一样,暂存缓冲区也存储在 IntelliJ-Installation-Directory\config\scratches 文件夹中。

滚动条

滚动条突出显示代码中的警告/错误消息/TODO 标记。例如,从未使用过 sayHello() 和 sayGoodBye() 方法;因此,滚动条显示黄色标记。

滚动条

在第 8 行,有 TODO 注释,滚动条使用蓝色标记突出显示它。错误使用红色标记突出显示。

编辑器操作

在本节中,我们将讨论 IntelliJ 中的编辑器操作。

搜索和替换

在当前文件中搜索文本 -

  • 导航到编辑器窗口中的文件并按 Ctrl+F。

  • 它将显示文本框,在其中输入要搜索的文本。

  • 您可以在此处提供各种选项 - 区分大小写匹配、精确匹配、正则表达式等。

编辑器操作

您可以在非常细粒度的级别上执行搜索操作。例如,搜索可以在项目、模块或目录级别进行 -

  • Ctrl+Shift+F组合键。

  • 将出现一个新窗口;从这里,您可以选择适当的级别。

新窗户

在当前文件中执行替换操作 -

  • Ctrl+R组合键。

  • 将出现一个对话框,在此处输入要替换的文本。

  • 此操作允许您替换单个匹配项、所有匹配项或跳过当前匹配项。

更换单个

要在粒度级别执行替换操作 -

  • Shift+Ctrl+R组合键。

  • 它将允许您替换项目、模块、目录和其他范围的文本。

列选择模式

要启用列模式选择,请在选择文本时按住Alt键。要永久启用列选择模式,请选择编辑 → 列选择模式

色谱柱选择

剪贴板历史记录

当我们复制任何文本时,它会进入剪贴板历史记录。IntelliJ 维护剪贴板历史记录。要查看此历史记录,请按Ctrl+Shift+V组合键。您可以从此窗口选择要粘贴的内容。

剪贴板历史记录

代码完成

IntelliJ动态检查代码并提供准确的代码完成。例如,当我输入单词say - 它会建议sayHello()sayGoodBye()方法。

代码完成

代码完成在使用类对象时建议类属性和类方法。

生成代码

IntelliJ 提供了一种生成有用代码的方法,例如构造函数、getter、setter、toString() 方法、重写方法等。按照以下步骤在编辑器窗口中生成右键单击。

  • 选择生成选项。

  • 它将列出可以生成代码的方法。

生成选项

代码检查

我们已经看到 IntelliJ 识别语法错误、警告消息和 TODO 标记。除此之外,它还建议代码改进、识别死代码、代码优化。例如,在下面给出的代码中,flag 的值始终为 true。因此,else部分永远不会被执行。

boolean flag = true; 
if (flag == true) { 
   System.out.println("Value of flag is true"); 
} else { 
   System.out.println("Value of flag is false"); 
}

IntelliJ 识别了这一点并建议删除此代码块。

代码检查

比较文件和文件夹

按照以下步骤比较文件和文件夹 -

  • 按住Ctrl键并从项目角度选择要比较的文件。

  • 右键单击它并选择“比较文件”选项。

  • 它将打开“比较”窗口,其中突出显示更改。

您还可以将一个文件的更改应用到另一个文件。如果您观察,会发现有两个以红色突出显示的箭头标记。单击它们以应用其他文件中的更改。按Ctrl+Z撤消更改。

同样,要比较文件夹,请从项目角度选择文件夹而不是文件。

比较文件

寻求帮助

如果您轻松获得有关代码的详细信息,这将很有用。与方法描述一样,其返回类型、参数类型和参数数量 - IntelliJ 可以在编辑器窗口本身中提供这些详细信息。

内联文档

顾名思义,IntelliJ 可以通过从代码中提取文档来访问文档。如果您为代码提供 Java 文档,那么 IntelliJ 可以显示有关它的帮助。要访问内联文档,请将鼠标悬停在方法名称上并单击,然后按Ctrl+Q组合键。

内联文档

查看定义

要查看定义,请将鼠标悬停在方法名称上,然后按Ctrl+Shift+I组合键。

查看定义

显示使用情况

要查看方法用法,请单击方法声明/定义,然后按Alt+Ctrl+F7组合键。

显示使用情况

查看参数

要查看方法参数,请键入方法名称并按Ctrl+P组合键。

查看参数

检测代码

Linting 是 lint 工具分析源代码并报告与编码标准相关的潜在问题的过程。它有助于提高代码质量。IntelliJ 支持 SonarLint 插件,该插件可以检查代码。

关于 SonarLint

安装并启用 SonarLint 插件后,当您在编辑器窗口中打开文件时,它将自动开始分析代码。它将报告 SonarLint 面板中的问题。我们将在本节中讨论更多相关内容。

SonarLint 支持流行的编程语言,如 Java、JavaScript、PHP 和 Python。

安装

按照以下步骤安装 SonarLint -

  • 从这里下载 SonarLint 。

  • 转到文件→设置→选择插件

  • 单击从磁盘安装插件按钮。

  • 按照屏幕上的安装步骤完成安装过程。

屏幕安装

代码分析

安装并启用插件后,它将开始动态分析代码。它将报告 SonarLint 面板中的问题。按照以下步骤查看当前文件的问题 -

  • 单击当前文件选项卡。

  • 它将报告未使用的局部变量、未使用的类属性、消息日志记录等问题。

  • 要了解有关问题的更多信息,请单击 SolarLint 面板中的问题。

  • 在窗口右侧,会显示其严重程度,如“Major”、“Minor”等。

严重程度为主要

进行一次性代码分析

如果您对动态代码分析感到不舒服,那么您可以禁用它,并在准备好代码后执行一次性代码分析。按照以下步骤禁用即时代码分析 -

  • 转到文件 → 设置 → 其他设置 → SonarLint 常规设置

  • 从设置选项卡中取消选中自动触发分析复选框。

  • 单击“应用”,然后单击“确定”按钮。

自动触发分析

Intellij Idea - 代码重构

在本章中,我们将了解代码重构及其在 IntelliJ 中的工作原理。代码重构是在不改变其功能和可用性的情况下重构代码。代码重构可以提高代码的可读性、性能或删除未使用/重复的功能。IntelliJ 为代码重构提供了强大的支持。本章讨论各种代码重构操作。

改名

重命名操作可用于重命名方法、其参数、类属性、局部变量等。让我们在 IntelliJ 中创建以下类。

public class Employee {
   private String name;
   private String address;
   private int age;
   public Employee() {
      this("Jarvis", "Palo Alto", 35);
   }
   public Employee(String name, String address, int age) {
      this.name = name;
      this.address = address;
      this.age = age;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public String getAddress() {
      return address;
   }
   public void setAddress(String address) {
      this.address = address;
   }
   public int getAge() {
      return age;
   }
   public void setAge(int age) {
      this.age = age;
   }
   
   @Override
   public String toString() {
      return "Employee{" +
      "name='" + name + '\'' +
      ", address='" + address + '\'' +
      ", age=" + age +
      '}';
   }
   public static void main(String args[]) {
      Employee e = new Employee();
      System.out.println(e);
   }
}

现在,让我们将Employee类重命名为Person。此操作将在构造函数和main()方法中进行修改 -

  • 选择员工词

  • 转到Refactor → Rename并用 Person 重命名。

重命名动作

替换重复代码

这是强大的重构操作之一。IntelliJ 识别代码重复并将其替换为适当的代码。让我们引入代码重复并重构它。在编辑器中输入以下代码 -

public class Employee {
   private String name;
   private String address;
   private int age;
   public Employee() {
      this("Jarvis", "Palo Alto", 35);
   }
   public Employee(String name, String address, int age) {
      this.name = name;
      this.address = address;
      this.age = age;
   }
   public void setData(String name, String address,  int age) {
      this.name = name;
      this.address = address;
      this.age = age;
   }
   public void showEmployeeDetail() {
      System.out.println("Name = " + name + ", Address = " + address + ", Age = " + age);
   }
   public static void main(String args[]) {
      Employee e = new Employee();
      e.showEmployeeDetail();
   }
} 

在此示例中,Employee(String name, String address, intage ) 构造函数和public void setData(String name, String address, intage ) 方法完全相同。重构后,Employee(String name, String address, intage) 构造函数被修改如下 -

public Employee(String name, String address, int age) {
 setData(name, address, age);
}

替换重复项 -

  • 转到重构→查找并替换代码重复项。

  • 选择重构范围并按照屏幕上的步骤完成操作。

替换重复代码

复制重构

在本节中,我们将了解如何将一个类复制到另一个类。让我们将 Employee 类复制到 Person 类。我们可以将其复制到现有模块或新模块中。IntelliJ 将根据它进行所需的更改。按照以下步骤执行复制重构 -

  • 转到Refactor → Copy,它将打开对话框。

  • 输入新名称和目标包。

  • 单击“确定”按钮,它将执行所需的操作。

复制类

移动重构

移动重构与复制类似,但它不是制作另一个副本,而是将代码移动到不同的包或将其作为另一个类的内部类。

按照以下步骤执行移动重构 -

  • 转到重构→移动。

  • 将出现一个新窗口。

  • 根据您的选择选择选项之一,然后单击“重构”。

移动重构

安全删除

仅当项目中任何地方都没有引用对象时,安全删除操作才会删除该对象。此选项的目标可以是类、接口、方法、字段或参数。

让我们看看它的实际效果。在编辑器中输入以下代码 -

public class HelloWorld {
   static void sayHello() {
      System.out.println("Hello, World !!!");
   }
   public static void main(String[] args) {
      sayHello();
   }
}

请按照以下步骤执行安全删除操作 -

  • 选择sayHello()方法。

  • 右键单击它并选择“重构”→“安全删除”选项。

  • 当使用 sayHello() 方法时,它将显示一个错误,如下图所示 -

安全删除操作

更改签名

该操作修改方法签名。它可以改变方法的名称、参数、类型、返回值等。让我们采用上面示例中的一个方法并更改其签名。

按照以下步骤执行更改签名操作 -

  • 选择方法。

  • 右键单击它并选择“重构”→“更改签名”操作

  • 将出现一个新窗口,您可以在其中执行上述操作。

  • 窗口底部显示新签名的预览。

更改签名

类型迁移

类型迁移会更改符号的类型。该符号可以是方法参数或类属性。在执行所需的操作之前,让我们考虑以下方法 -

static void sayHello(String name) {
   System.out.println(name);
}

请按照以下步骤执行类型迁移 -

  • 选择“字符串”数据类型。

  • 右键单击它并选择Refactor → Type migration

类型迁移
  • 在给定的文本框中输入所需的数据类型。

  • 选择范围并单击“重构”按钮。

Intellij Idea - 运行项目

IntelliJ 提供了多种创建配置的方法。本章讨论创建临时、永久配置的选项。它还讨论了在其他用户之间共享配置的方法。

创建临时配置

临时配置是在运行或调试 Java 类或测试用例时创建的。请考虑以下步骤来了解其工作原理 -

  • 创建一个 Java 类。
  • 右键单击它并选择运行选项。
  • 第一次运行后,临时配置将添加到运行菜单中。
临时配置

创建永久配置

通过使用 IntelliJ 保存临时配置可以将其转换为永久配置。要保存配置,请单击“运行”菜单中的“保存配置”选项 -

永久配置

您还可以通过编辑来修改现有配置。

创建新配置

在本节中,我们将了解如何创建新配置。按照以下步骤创建新配置 -

  • 导航至运行 → 编辑配置。

  • 单击加号按钮添加新配置。

  • 从下拉列表中选择应用程序。

新配置
  • 它将创建未命名的配置。

  • 根据您的要求进行配置,然后单击“确定”按钮。

  • 可以从“运行”菜单访问此保存的配置以及其他配置。

共享配置

按照以下步骤与其他人共享配置 -

  • 导航至运行 → 编辑配置。

  • 从左侧窗格中选择配置,然后单击共享复选框。

  • 它将把配置存储在磁盘上。

如果使用基于目录的格式,它将把配置保存在 runConfiguration文件夹下的单独文件中。否则,它将把配置存储在.ipr文件中。

共享配置

运行配置

使用特定配置运行项目 -

  • 从“运行”菜单中选择配置。

  • 运行项目,如下面的屏幕截图所示 -

运行配置

Intellij Idea - 构建工具

IntelliJ 提供了一种构建和打包 Java 包的方法。它支持 Maven 和 Gradle 等外部构建工具。本章讨论这些构建工具。

创建 Maven 项目

按照以下步骤创建 Maven 项目 -

  • 导航到文件 → 项目

  • 选择 Maven 选项并单击“下一步”按钮。

Maven项目
  • 在新项目窗口中,输入tutorialspoint.com作为GroupId,输入HelloWorld作为ArtifactId。

  • 在“新建”窗口中,它将打开 pom.xml 文件。

  • 我们需要向该文件添加属性;最终的 pom.xml 文件应如下所示 -

<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0  
      http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.tutorialspoing</groupId>
   <artifactId>HelloWorld</artifactId>
   <version>1.0-SNAPSHOT</version>
   <properties>
      <maven.compiler.source>1.7</maven.compiler.source>
      <maven.compiler.target>1.7</maven.compiler.target>
   </properties>
</project>

现在,让我们在Maven 项目的src/main/java目录中创建一个 Java 类。按照以下步骤创建类 -

  • 导航到 src/main/java 目录。

  • 右键单击它并选择New → Java Class

按照以下步骤使用 Maven 编译此类 -

  • 导航至运行 → 编辑配置。

  • 单击绿色加号图标,然后从下拉菜单中选择 Maven 选项。

  • 输入项目名称 Maven-Package。

  • 提供包作为命令行。

  • 单击“确定”按钮。

命令行
  • 导航到“运行”并选择“Maven-Package”选项。

  • 它将开始构建包。成功构建包后,您将看到以下结果 -

建筑套件

创建 Gradle 项目

在本节中,我们将学习如何创建 Gradle 项目 -

  • 导航到文件 → 项目并选择 Gradle。

  • 单击“下一步”按钮。

  • 在新项目窗口中,输入tutorialspoint作为GroupId,输入HelloWorld 作为ArtifactId。

  • 单击“下一步”按钮,验证项目详细信息,然后单击“完成”按钮。

  • 按照屏幕上的说明完成该过程。

完成按钮
  • 打开buildl.gradle文件并编写Hello任务,如上面的屏幕截图所示。

  • 要编译此任务,请导航至Run → Build-Gradle选项。

Intellij Idea - 单元测试

单元测试在软件开发中起着重要作用。IntelliJ 支持各种单元测试框架,例如 JUnit、TestNG、Spock 等等。在本章中,我们将使用 JUnit3。

创建单元测试

在本节中,我们将学习如何创建单元测试。按照以下步骤创建测试 -

  • 选择导航→测试选项。

  • 将出现一个对话框,其中您必须选择“创建新测试”

  • 按照屏幕上的说明继续操作 -

  • 提供有关测试的详细信息,如测试库、类详细信息、setUp、tearDown 方法等。

拆卸方法
  • 单击“确定”按钮继续。

  • 将创建一个测试类。最初它可能无法解析某些符号。将光标移动到错误行,会显示提示符号。

  • 从下拉菜单中选择适当的选项。我们选择了添加库“junit.jar!” 到类路径选项 -

类路径选项

您可以根据您的业务需求在每个测试中添加逻辑。为了简单起见,我将其保留为空。

运行单元测试

按照以下步骤运行单元测试 -

  • 从编辑器窗口中选择单元测试类。

  • 导航到“运行”菜单并选择“运行”选项。

  • 将生成以下结果

运行选项。

Intellij Idea - 调试

调试器使应用程序调试变得更加容易。使用调试器,我们可以在某个点停止程序的执行、检查变量、单步执行函数并执行许多操作。IntelliJ 提供内置的 Java 调试器。

断点

断点允许在某个点停止程序执行。可以通过将鼠标悬停在编辑器的装订线区域上并单击它来设置断点。

断点用红色圆圈符号表示。考虑在第 3 行设置的断点。

断点

请考虑以下步骤以了解有关断点如何工作的更多信息 -

  • 右键单击红色圆圈符号。

  • 选择更多选项。

  • 要删除断点,只需单击相同的符号即可。

按照以下步骤启动调试器 -

  • 导航到“运行”菜单。
  • 选择调试选项。

步入

调试时,如果遇到某个函数并选择了进入操作,则调试器将在该函数的每个点停止程序执行,就像为该函数启用了调试一样。

例如,当程序执行到第 9 行时,如果我们选择进入操作,那么它将在sayGoodBye()函数中的每一行停止执行。

程序执行

走出去

Step out 动作与 Step in 动作正好相反。例如,如果您在上述场景中执行步出操作,则调试器将从sayGoodBye()方法返回并在第 10 行开始执行。

走出去

跨过去

Step over 动作不会进入函数,而是跳转到下一行代码。例如,如果您在第 9 行执行步过操作,那么它将执行到第 10 行。

跨过

简历计划

“恢复程序”操作将忽略所有断点来继续执行程序。

断点

停止动作

停止操作有助于停止调试器。

停止行动

智能步入

在调试时,我们有时可能会遇到调用多个方法的一行代码。在调试这些代码行时,调试器通常允许我们使用单步执行并引导我们完成所有子函数,然后返回到父函数。然而,如果我们只想单步执行一个子函数怎么办?通过智能步入,它允许我们选择要步入的功能。

现在,让我们使用以下代码行创建一个 Java 类 -

public class HelloWorld {
   public static void main(String[] args) {
      allFunctions();
   }
   static void allFunctions() {
      System.out.println(function1() + " " + function2() + " " + function3());
   }
   static String function1() {
      return "function1";
   }
   static String function2() {
      return "function2";
   }
   static String function3() {
      return "function3";
   }
}

在上面的代码中,allFunctions()又调用了 3 个函数。让我们在此函数处设置断点。按照以下步骤执行智能步骤 -

  • 去跑步
  • 选择智能步入。
  • 选择要执行的子函数。
子函数

检查变量

在调试期间,IntelliJ 在编辑器窗口本身中显示变量的值。我们也可以在调试窗口中查看相同的信息。

检查变量

评估表达

评估表达式允许动态评估表达式。请按照以下步骤执行此操作 -

  • 在调试器中启动应用程序

  • 导航到“运行”->“评估表达式”。

  • 输入表达式。在下面给出的示例中,变量“i”的当前值为 0;因此,表达式“i > 100”将计算为 false

评估表达

Intellij Idea - 分析

Profiler 提供有关您的应用程序的见解,例如 CPU、内存和堆使用情况。它还提供了有关应用程序线程的详细信息。本章讨论使用 VisualVM 工具进行 Java 应用程序分析。它可以分析 CPU 和堆等实体。

建议本教程的读者熟悉应用程序分析器概念。

介绍

VisualVM是一个集成了JDK工具的可视化工具,为您提供强大的分析功能。它允许您生成和分析堆数据、跟踪内存泄漏、监视垃圾收集器以及执行内存和 CPU 分析。

好处

  • 在 JVM 上运行的本地和远程 Java 应用程序的可视化界面。

  • 监视应用程序的内存使用情况和应用程序的运行时Behave。

  • 监控应用程序线程

  • 分析不同应用程序的内存分配。

  • 线程转储 - 在出现死锁和竞争条件时非常方便。

  • 堆转储 - 在分析堆内存分配时非常方便。

配置

在本节中,我们将了解配置 VisualVM 所执行的步骤。步骤如下 -

  • 从这里下载。

  • 提取 zip 文件。

  • 导航到 etc/visualvm.conf 文件并在此文件中添加以下行 -

visualvm_jdkhome=<path of JDK>
  • 如果您的 JDK 安装在C:\Program Files\Java\jdk-9.0.1目录中,那么它应该如下所示 -

visualvm_jdkhome="C:\Program Files\Java\jdk-9.0.1"

监控应用

现在让我们看看如何监控应用程序。考虑以下步骤来理解相同的内容 -

  • 双击 VisualVM.exe 文件。
  • 从左侧窗格中选择应用程序。
  • 选择监视器选项卡。
监控应用

您将被引导到一个窗口,您可以在其中获取有关 CPU、堆、类和线程的详细信息。要具体了解用法,请将鼠标悬停在任何图表上。我们可以在上面的截图中看到Heap的使用情况。

关于线程的见解

Java 应用程序可以包含多个执行线程。要了解有关线程的更多信息,请选择特定应用程序的“线程”选项卡。它将提供有关线程的各种统计信息,例如活动线程和守护线程的数量。不同的线程状态是运行、睡眠、等待、暂停和监视。

见解主题

样品申请

VisualVM支持CPU、内存采样和内存泄漏检测。要示例应用程序,请选择应用程序并选择示例选项卡 -

CPU采样

对于 CPU 采样,请单击 CPU 按钮,如下图所示 -

内存采样

内存分析

对于内存分析,单击“内存”按钮,如以下屏幕截图所示 -

内存分析

内存泄漏

当应用程序在运行时慢慢地用程序不会自动删除的对象填充堆时,就会发生内存泄漏。

如果程序不使用的对象没有被删除,那么它仍然保留在内存中,GC 无法回收其空间。如果应用程序中的字节数和实例数不断显着增加,直至耗尽所有空间,这可能表明存在内存泄漏。

分析应用

在本节中,我们将学习如何分析应用程序