Java查漏补缺(04)IDEA安装设置、JDK相关设置、详细设置、工程与模块管理、代码模板的使用、快捷键的使用、DEBUG断点调试、常用插件

news2024/11/18 21:26:32

Java查漏补缺(04)IDEA安装设置、JDK相关设置、详细设置、工程与模块管理、代码模板的使用、快捷键的使用、DEBUG断点调试、常用插件

  • 本章专题与脉络
  • 1. 认识IntelliJ IDEA
    • 1.1 JetBrains 公司介绍
    • 1.2 IntelliJ IDEA 介绍
    • 1.3 IDEA的主要优势:(vs Eclipse)
    • 1.4 IDEA 的下载
  • 2. 卸载与安装
    • 2.1 卸载过程
    • 2.2 安装前的准备
    • 2.3 安装过程
    • 2.4 注册
    • 2.5 闪退问题
  • 3. HelloWorld的实现
    • 3.1 新建Project - Class
    • 3.2 编写代码
    • 3.3 运行
  • 4. JDK相关设置
    • 4.1 项目的JDK设置
    • 4.2 out目录和编译版本
  • 5. 详细设置
    • 5.1 如何打开详细配置界面
    • 5.2 系统设置
      • 5.2.1、默认启动项目配置
      • 5.2.2、取消自动更新
    • 5.3 设置整体主题
      • 5.3.1、选择主题
      • 5.3.2、设置菜单和窗口字体和大小
      • 5.3.3、设置IDEA背景图
    • 5.4 设置编辑器主题样式
      • 5.3.1、编辑器主题
      • 5.3.2、字体大小
      • 5.3.3、注释的字体颜色
    • 5.5 显示行号与方法分隔符
    • 5.6 代码智能提示功能
    • 5.7 自动导包配置
    • 5.8 设置项目文件编码(一定要改)
    • 5.9 设置控制台的字符编码
    • 5.10 修改类头的文档注释信息
    • 5.11 设置自动编译
    • 5.12 设置为省电模式 (可忽略)
    • 5.13 取消双击shift搜索
  • 6. 工程与模块管理
    • 6.1 IDEA项目结构
    • 6.2 Project和Module的概念
    • 6.3 Module和Package
    • 6.4 创建Module
    • 6.5 删除模块
    • 6.6 导入老师的模块
    • 6.7 同时打开两个IDEA项目工程
      • 6.7.1、两个IDEA项目工程效果
      • 6.7.2、新建一个IDEA项目
      • 6.7.3、打开两个IDEA项目
    • 6.8 导入前几章非IDEA工程代码
  • 7. 代码模板的使用
    • 7.1 查看Postfix Completion模板(后缀补全)
    • 7.2 查看Live Templates模板(实时模板)
    • 7.3 常用代码模板
      • 7.3.1、非空判断
      • 7.3.2、遍历数组和集合
      • 7.3.3、输出语句
      • 7.3.4、对象操作
      • 7.3.5、静态常量声明
    • 7.4 自定义代码模板
      • 7.4.1 自定义后缀补全模板
      • 7.4.2 自定义Live Templates
  • 8. 快捷键的使用
    • 8.1 常用快捷键
      • 第1组:通用型
      • 第2组:提高编写速度(上)
      • 第3组:提高编写速度(下)
      • 第4组:类结构、查找和查看源码
      • 第5组:查找、替换与关闭
      • 第6组:调整格式
      • 第7组:Debug快捷键
    • 8.2 查看快捷键
      • 8.2.1、已知快捷键操作名,未知快捷键
      • 8.2.2、已知快捷键,不知道对应的操作名
    • 8.3 自定义快捷键
    • 8.4 使用其它平台快捷键
  • 9. IDEA断点调试(Debug)
    • 9.1 为什么需要Debug
      • 9.2 Debug的步骤
    • 9.3 多种Debug情况介绍
      • 9.3.1 行断点
      • 9.3.2 方法断点
      • 9.3.3 字段断点
      • 9.3.4 条件断点
      • 9.3.5 异常断点(暂略)
      • 9.3.6 线程调试(暂略)
      • 9.3.7 强制结束
    • 9.4 自定义调试数据视图(暂略)
    • 9.5 常见问题
  • 10. IDEA常用插件
    • 推荐1:Alibaba Java Coding Guidelines
    • 推荐2:jclasslib bytecode viewer
    • 推荐3:Translation
    • 推荐4:GenerateAllSetter
    • 插件5:Rainbow Brackets
    • 推荐6:CodeGlance Pro
    • 推荐7:Statistic
    • 推荐8:Presentation Assistant
    • 推荐9:Key Promoter X
    • 推荐10:JavaDoc
    • 推荐11:LeetCode Editor
    • 推荐12:GsonFormatPlus
    • 插件13:Material Theme UI

本章专题与脉络

在这里插入图片描述


【Why IDEA ?】

在这里插入图片描述
在这里插入图片描述

【注】JetBrains官方说明:

尽管我们采取了多种措施确保受访者的代表性,但结果可能会略微偏向 JetBrains 产品的用户,因为这些用户更有可能参加调查。

此外,2022年,某美国软件开发商在对近千名专业的Java开发者调研后,发布了《2022年Java开发者生产力报告》。报告提到:JetBrains 的 IntelliJ IDEA是最受欢迎的 Java IDE,占 48%,其次是 Eclipse,占 24%,Visual Studio Code 占 18%。


本着"工欲善其事必先利其器"的精神,本章从IDEA的介绍、安装、设置入手,讲解IDEA中项目的创建、快捷键与模板的使用、断点调试、常用插件等。

1. 认识IntelliJ IDEA

1.1 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 社区版进行迭代的。
在这里插入图片描述

1.2 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.

在这里插入图片描述

1.3 IDEA的主要优势:(vs Eclipse)

功能强大:

① 强大的整合能力。比如:Git、Maven、Spring等

在这里插入图片描述

② 开箱即用的体验(集成版本控制系统、多语言支持的框架随时可用,无需额外安装插件)

符合人体工程学:

① 高度智能(快速的智能代码补全、实时代码分析、可靠的重构工具)

在这里插入图片描述

② 提示功能的快速、便捷、范围广

在这里插入图片描述
在这里插入图片描述

③ 好用的快捷键和代码模板

④ 精准搜索

1.4 IDEA 的下载

  • 下载网址: https://www.jetbrains.com/idea/download/#section=windows

  • IDEA 分为两个版本: 旗舰版(Ultimate)社区版(Community)

  • IDEA的大版本每年迭代一次,大版本下的小版本(如:2022.x)迭代时间不固定,一般每年3个小版本。

在这里插入图片描述

两个不同版本的详细对比,可以参照官网:
https://www.jetbrains.com/idea/features/editions_comparison_matrix.html

官网提供的详细使用文档:
https://www.jetbrains.com/help/idea/meet-intellij-idea.html

2. 卸载与安装

2.1 卸载过程

这里以卸载2022.1.2版本为例说明。在【控制面板】找到【卸载程序】

在这里插入图片描述

右键点击或左键双击IntelliJ IDEA 2022.1.2进行卸载:

在这里插入图片描述

如果需要保留下述数据,就不要打√。如果想彻底删除IDEA所有数据,那就打上√。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

软件卸载完以后,还需要删除其它几个位置的残留:

在这里插入图片描述
在这里插入图片描述

2.2 安装前的准备

在这里插入图片描述

  • 64 位 Microsoft Windows 11、10、8
  • 最低 2 GB 可用 RAM,推荐 8 GB 系统总 RAM
  • 2.5 GB 硬盘空间,推荐 SSD
  • 最低屏幕分辨率 1024x768

从安装上来看,IntelliJ IDEA 对硬件的要求似乎不是很高。可是在实际开发中并不是这样的,因为 IntelliJ IDEA 执行时会有大量的缓存、索引文件,所以如果你正在使用 Eclipse / MyEclipse,想通过 IntelliJ IDEA 来解决计算机的卡、慢等问题,这基本上是不可能的,本质上你应该对自己的硬件设备进行升级。

2.3 安装过程

1、下载完安装包,双击直接安装在这里插入图片描述

2、欢迎安装

在这里插入图片描述

3、是否删除电脑上低版本的IDEA(如果有,可以选择忽略)

在这里插入图片描述

  • 如果电脑上有低版本的IDEA,可以选择删除或保留。

  • 这里没有卸载旧版本,如果需要卸载,记得勾选下面的保留旧的设置和配置。

4、选择安装目录

在这里插入图片描述

选择安装目录,目录中要避免中文和空格。

在这里插入图片描述

5、创建桌面快捷图标等

在这里插入图片描述

确认是否与.java、.groovy、.kt 格式文件进行关联。这里建议不关联。

6、在【开始】菜单新建一个文件夹(这里需要确认文件夹的名称),来管理IDEA的相关内容。

在这里插入图片描述
在这里插入图片描述

7、完成安装

在这里插入图片描述

重启以后,单击登录:在这里插入图片描述

2.4 注册

首先,需要通过用户协议:

在这里插入图片描述

是否同意发送用户数据(特性、使用的插件、硬件与软件配置等),建议选择:不发送。

在这里插入图片描述

接着,会提示我们进行注册。

  • 选择1:试用30天。在IDEA2022.1.2版本中,需要先登录,才能开启试用。
    在这里插入图片描述

  • 选择2:付费购买旗舰版
    在这里插入图片描述
    在这里插入图片描述

2.5 闪退问题

问题描述:2022.1启动不了,双击桌面图标,没有响应。

解决办法:

打开C:\Users\songhk\AppData\Roaming\JetBrains\IntelliJIdea2022.1\idea64.exe.vmoptions 这个文件。

在这里插入图片描述

内容如下所示:

在这里插入图片描述

删除红框的数据以后,再登录即可正常进入。

在这里插入图片描述

原因:之前使用过的比如2021.2.2版本,pojie了。新版IEDA太智能了,把现有的启运参数也都复制过去了。又因为最新的IDEA,不兼容pojie程序-javaagent:D:\develop_tools\IDEA\IntelliJ IDEA 2021.2.2\bin\jetbrains-agent.jar了,所以报错了,所以JVM结束了,所以没有启动画面,凉凉了。

3. HelloWorld的实现

3.1 新建Project - Class

选择"New Project":

在这里插入图片描述

指名工程名、使用的JDK版本等信息。如下所示:

在这里插入图片描述

接着创建Java类:

在这里插入图片描述
在这里插入图片描述

3.2 编写代码

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

3.3 运行

在这里插入图片描述
在这里插入图片描述

4. JDK相关设置

4.1 项目的JDK设置

File-->Project Structure...-->Platform Settings -->SDKs

在这里插入图片描述
在这里插入图片描述

  • 注1:SDKs全称是Software Development Kit ,这里一定是选择JDK的安装根目录,不是JRE的目录。
  • 注2:这里还可以从本地添加多个JDK。使用“+”即可实现。

4.2 out目录和编译版本

File-->Project Structure...-->Project Settings -->Project

在这里插入图片描述

5. 详细设置

5.1 如何打开详细配置界面

1、显示工具栏

在这里插入图片描述

2、选择详细配置菜单或按钮

在这里插入图片描述
在这里插入图片描述

5.2 系统设置

5.2.1、默认启动项目配置

在这里插入图片描述

启动IDEA时,默认自动打开上次开发的项目?还是自己选择?

如果去掉Reopen projects on startup前面的对勾,每次启动IDEA就会出现如下界面:

在这里插入图片描述

5.2.2、取消自动更新

Settings–>Appearance & Behavior->System Settings -> Updates

在这里插入图片描述

默认都打√了,建议检查IDE更新的√去掉,检查插件更新的√选上。

5.3 设置整体主题

5.3.1、选择主题

在这里插入图片描述

5.3.2、设置菜单和窗口字体和大小

在这里插入图片描述

5.3.3、设置IDEA背景图

在这里插入图片描述

选择一张合适的图片作为背景,即可。

在这里插入图片描述

5.4 设置编辑器主题样式

5.3.1、编辑器主题

在这里插入图片描述

5.3.2、字体大小

在这里插入图片描述

更详细的字体与颜色如下:

在这里插入图片描述

温馨提示:如果选择某个font字体,中文乱码,可以在fallback font(备选字体)中选择一个支持中文的字体。

5.3.3、注释的字体颜色

在这里插入图片描述

  • Block comment:修改多行注释的字体颜色
  • Doc Comment –> Text:修改文档注释的字体颜色
  • Line comment:修改单行注释的字体颜色

5.5 显示行号与方法分隔符

在这里插入图片描述

5.6 代码智能提示功能

在这里插入图片描述

IntelliJ IDEA 的代码提示和补充功能有一个特性:区分大小写。 如果想不区分大小写的话,就把这个对勾去掉。建议去掉勾选

5.7 自动导包配置

  • 默认需要自己手动导包,Alt+Enter快捷键

在这里插入图片描述

  • 自动导包设置
    • 动态导入明确的包:Add unambiguous imports on the fly,该设置具有全局性;
    • 优化动态导入的包:Optimize imports on the fly,该设置只对当前项目有效;

在这里插入图片描述

5.8 设置项目文件编码(一定要改)

在这里插入图片描述

说明: Transparent native-to-ascii conversion主要用于转换ascii,显式原生内容。一般都要勾选。

5.9 设置控制台的字符编码

在这里插入图片描述

5.10 修改类头的文档注释信息

在这里插入图片描述

比如:

/**
* ClassName: ${NAME}
* Package: ${PACKAGE_NAME}
* Description: 
* @Author Demik
* @Create ${DATE} ${TIME} 
* @Version 1.0   
*/

常用的预设的变量,这里直接贴出官网给的:

${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.

5.11 设置自动编译

Settings-->Build,Execution,Deployment-->Compiler

在这里插入图片描述

5.12 设置为省电模式 (可忽略)

在这里插入图片描述

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

5.13 取消双击shift搜索

因为我们按shift切换中英文输入方式,经常被按到,总是弹出搜索框,太麻烦了。可以取消它。

在这里插入图片描述

  • 方式1:适用于IDEA 2022.1.2版本

    在2022.1版本中,采用如下方式消双击shift出现搜索框:搜索double即可,勾选Disable double modifier key shortcuts,禁用这个选项。

    在这里插入图片描述

  • 方式2:适用于IDEA 2022.1.2之前版本

    双击shift 或 ctrl + shift + a,打开如下搜索窗口:

    在这里插入图片描述

    选择registry…,找到"ide.suppress.double.click.handler",把复选框打上勾就可以取消双击shift出现搜索框了。

    在这里插入图片描述

6. 工程与模块管理

6.1 IDEA项目结构

层级关系:

project(工程) - module(模块) - package(包) - class(类)

具体的:

一个project中可以创建多个module

一个module中可以创建多个package

一个package中可以创建多个class

这些结构的划分,是为了方便管理功能代码。

6.2 Project和Module的概念

在 IntelliJ IDEA 中,提出了Project和Module这两个概念。

在这里插入图片描述

在 IntelliJ IDEA 中Project是最顶级的结构单元,然后就是Module。目前,主流的大型项目结构基本都是多Module的结构,这类项目一般是按功能划分的,比如:user-core-module、user-facade-module和user-hessian-module等等,模块之间彼此可以相互依赖,有着不可分割的业务关系。因此,对于一个Project来说:

  • 当为单Module项目的时候,这个单独的Module实际上就是一个Project。
  • 当为多Module项目的时候,多个模块处于同一个Project之中,此时彼此之间具有互相依赖的关联关系。
  • 当然多个模块没有建立依赖关系的话,也可以作为单独一个“小项目”运行。

6.3 Module和Package

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

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

6.4 创建Module

建议创建“Empty空工程”,然后创建多模块,每一个模块可以独立运行,相当于一个小项目。JavaSE阶段不涉及到模块之间的依赖。后期再学习模块之间的依赖。

步骤:

(1)选择创建模块

在这里插入图片描述

(2)选择模块类型:这里选择创建Java模块,给模块命名,确定存放位置

在这里插入图片描述

(3)模块声明在工程下面

在这里插入图片描述

6.5 删除模块

(1)移除模块

在这里插入图片描述
在这里插入图片描述

(2)彻底删除模块

在这里插入图片描述

6.6 导入老师的模块

(1)将老师的模块teacher_chapter04整个的复制到自己IDEA项目的路径下

在这里插入图片描述

接着打开自己IDEA的项目,会在项目目录下看到拷贝过来的module,只不过不是以模块的方式呈现。

在这里插入图片描述

(2)查看Project Structure,选择import module

在这里插入图片描述
在这里插入图片描述

(3)选择要导入的module:

在这里插入图片描述
在这里插入图片描述

(4)接着可以一路Next下去,最后选择Overwrite

在这里插入图片描述
在这里插入图片描述

最后点击OK即可了。

6.7 同时打开两个IDEA项目工程

6.7.1、两个IDEA项目工程效果

有些同学想要把上课练习代码和作业代码分开两个IDEA项目工程。

在这里插入图片描述
在这里插入图片描述

6.7.2、新建一个IDEA项目

注意:第一次需要新建,之后直接打开项目工程即可

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.7.3、打开两个IDEA项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.8 导入前几章非IDEA工程代码

1、创建chapter01、chapter02、chapter03等章节的module

将相应章节的源文件粘贴到module的src下。

在这里插入图片描述
在这里插入图片描述

打开其中各个源文件,会发现有乱码。比如:

在这里插入图片描述

2、设置编码

当前项目是UTF-8。如果原来的.java文件都是GBK的(如果原来.java文件有的是GBK,有的是UTF-8就比较麻烦了)。

可以单独把这两个模块设置为GBK编码的。

在这里插入图片描述

改为GBK,确认即可。如图:

在这里插入图片描述

7. 代码模板的使用

7.1 查看Postfix Completion模板(后缀补全)

在这里插入图片描述

7.2 查看Live Templates模板(实时模板)

在这里插入图片描述

7.3 常用代码模板

7.3.1、非空判断

  • 变量.null:if(变量 == null)
  • 变量.nn:if(变量 != null)
  • 变量.notnull:if(变量 != null)
  • ifn:if(xx == null)
  • inn:if(xx != null)

7.3.2、遍历数组和集合

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

7.3.3、输出语句

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

7.3.4、对象操作

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

7.3.5、静态常量声明

  • psf:public static final
  • psfi:public static final int
  • psfs:public static final String
  • prsf:private static final

7.4 自定义代码模板

7.4.1 自定义后缀补全模板

在这里插入图片描述

在这里插入图片描述

7.4.2 自定义Live Templates

例如:定义sop代表System.out.print();语句

①在Live Templates中增加模板

在这里插入图片描述

②先定义一个模板的组,这样方便管理所有自定义的代码模板

③在模板组里新建模板

在这里插入图片描述

④定义模板(以输出语句为例)

在这里插入图片描述

  • Abbreviation:模板的缩略名称

  • Description:模板的描述

  • Template text:模板的代码片段

  • 模板应用范围。比如点击Define。选择如下:应用在java代码中。

    在这里插入图片描述

其它模板1:单元测试模板:

@Test
public void test$var1$(){
    $var2$
}

在这里插入图片描述

其它模板2:创建多线程

new Thread(){
    public void run(){
        $var$
    }
};

在这里插入图片描述

其它模板3:冒泡排序

for(int $INDEX$ = 1; $INDEX$ < $ARRAY$.length; $INDEX$++) {
    for(int $INDEX2$ = 0; $INDEX2$ < $ARRAY$.length-$INDEX$; $INDEX2$++) {
        if($ARRAY$[$INDEX2$] > $ARRAY$[$INDEX2$+1]){
            $ELEMENT_TYPE$ temp = $ARRAY$[$INDEX2$];
            $ARRAY$[$INDEX2$] = $ARRAY$[$INDEX2$+1];
            $ARRAY$[$INDEX2$+1] = temp;
        }
    }
}

在这里插入图片描述

8. 快捷键的使用

8.1 常用快捷键

第1组:通用型

说明快捷键
复制代码-copyctrl + c
粘贴-pastectrl + v
剪切-cutctrl + x
撤销-undoctrl + z
反撤销-redoctrl + shift + z
保存-save allctrl + s
全选-select allctrl + a

第2组:提高编写速度(上)

说明快捷键
智能提示-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

第3组:提高编写速度(下)

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

第4组:类结构、查找和查看源码

说明快捷键
如何查看源码-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+ +

第5组:查找、替换与关闭

说明快捷键
查找指定的结构ctlr+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

第6组:调整格式

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

第7组: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

8.2 查看快捷键

8.2.1、已知快捷键操作名,未知快捷键

在这里插入图片描述

8.2.2、已知快捷键,不知道对应的操作名

在这里插入图片描述

8.3 自定义快捷键

在这里插入图片描述

8.4 使用其它平台快捷键

苹果电脑或者是用惯Eclipse快捷的,可以选择其他快捷键插件。

在这里插入图片描述

9. IDEA断点调试(Debug)

9.1 为什么需要Debug

编好的程序在执行过程中如果出现错误,该如何查找或定位错误呢?简单的代码直接就可以看出来,但如果代码比较复杂,就需要借助程序调试工具(Debug)来查找错误了。

运行编写好的程序时,可能出现的几种情况:
> 情况1:没有任何bug,程序执行正确!

====================如果出现如下的三种情况,都又必要使用debug=============================
> 情况2:运行以后,出现了错误或异常信息。但是通过日志文件或控制台,显示了异常信息的位置。
> 情况3:运行以后,得到了结果,但是结果不是我们想要的。
> 情况4:运行以后,得到了结果,结果大概率是我们想要的。但是多次运行的话,可能会出现不是我们想要的情况。
        比如:多线程情况下,处理线程安全问题。
        

9.2 Debug的步骤

Debug(调试)程序步骤如下:

  • 1、添加断点

  • 2、启动调试

  • 3、单步执行

  • 4、观察变量和执行流程,找到并解决问题

1、添加断点

在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同位置再次单击即可取消断点。

在这里插入图片描述

2、启动调试

IDEA提供多种方式来启动程序(Launch)的调试,分别是通过菜单(Run –> Debug)、图标(“绿色臭虫”)在这里插入图片描述等等

在这里插入图片描述

3、单步调试工具介绍

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述:Step Over(F8):进入下一步,如果当前行断点是调用一个方法,则不进入当前方法体内

在这里插入图片描述:Step Into(F7):进入下一步,如果当前行断点是调用一个自定义方法,则进入该方法体内

在这里插入图片描述:Force Step Into(Alt +Shift + F7):进入下一步,如果当前行断点是调用一个核心类库方法,则进入该方法体内

在这里插入图片描述:Step Out(Shift + F8):跳出当前方法体

在这里插入图片描述:Run to Cursor(Alt + F9):直接跳到光标处继续调试

在这里插入图片描述:Resume Program(F9):恢复程序运行,但如果该断点下面代码还有断点则停在下一个断点上

在这里插入图片描述:Stop(Ctrl + F2):结束调试

在这里插入图片描述:View Breakpoints(Ctrl + Shift + F8):查看所有断点

在这里插入图片描述:Mute Breakpoints:使得当前代码后面所有的断点失效, 一下执行到底

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

9.3 多种Debug情况介绍

9.3.1 行断点

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

9.3.2 方法断点

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

在这里插入图片描述

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

9.3.3 字段断点

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

在这里插入图片描述

9.3.4 条件断点

public class Debug04 {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10,11,12};

        for (int i = 0; i < arr.length; i++) {
            int target = arr[i];
            System.out.println(target);
        }
    }
}

针对上述代码,在满足arr[i] % 3 == 0的条件下,执行断点。

在这里插入图片描述

9.3.5 异常断点(暂略)

  • 对异常进行跟踪。如果程序出现指定异常,程序就会执行断点,自动停住。
public class Debug05 {
    public static void main(String[] args) {
        int m = 10;
        int n = 0;
        int result = m / n;
        System.out.println(result);

//        Person p1 = new Person(1001);
//        System.out.println(p1.getName().toUpperCase());


    }
}

通过下图的方式,对指定的异常进行监控:

在这里插入图片描述

9.3.6 线程调试(暂略)

public class Debug06 {
    public static void main(String[] args) {
        test("Thread1");
        test("Thread2");
    }

    public static void test(String threadName) {
        new Thread(
                () -> System.out.println(Thread.currentThread().getName()),
                threadName
        ).start();
    }

}

在这里插入图片描述

9.3.7 强制结束

public class Debug07 {
    public static void main(String[] args) {
        System.out.println("获取请求的数据");
        System.out.println("调用写入数据库的方法");
        insert();
        System.out.println("程序结束");
    }

    private static void insert() {
        System.out.println("进入insert()方法");
        System.out.println("获取数据库连接");
        System.out.println("将数据写入数据表中");
        System.out.println("写出操作完成");
        System.out.println("断开连接");
    }
}

在这里插入图片描述

9.4 自定义调试数据视图(暂略)

public class Debug08 {
    public static void main(String[] args) {
        HashMap<Integer,String> map = new HashMap<>();
        map.put(1,"高铁");
        map.put(2,"网购");
        map.put(3,"支付宝");
        map.put(4,"共享单车");

        System.out.println(map);
    }
}

设置如下:

在这里插入图片描述

9.5 常见问题

问题:使用Step Into时,会出现无法进入源码的情况。如何解决?

方案1:使用 force step into 即可

方案2:点击Setting -> Build,Execution,Deployment -> Debugger -> Stepping

把Do not step into the classess中的java.*javax.* 取消勾选即可。

在这里插入图片描述

小结:

经验:初学者对于在哪里加断点,缺乏经验,这也是调试程序最麻烦的地方,需要一定的经验。

简单来说,在可能发生错误的代码的前面加断点。如果不会判断,就在程序执行的起点处加断点。

10. IDEA常用插件

推荐1:Alibaba Java Coding Guidelines

在这里插入图片描述

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

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

推荐2:jclasslib bytecode viewer

在这里插入图片描述

可视化的字节码查看器。

使用:

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

在这里插入图片描述

英文设置:

在 Help -> Edit Custom VM Options …,加上

-Duser.language=en

推荐3:Translation

在这里插入图片描述

注册翻译服务(有道智云、百度翻译开放平台、阿里云机器翻译)帐号,开通翻译服务并获取其应用ID和密钥
绑定应用ID和密钥:偏好设置(设置) > 工具 > 翻译 > 常规 > 翻译引擎 > 配置…

使用:鼠标选中文本,点击右键即可自动翻译成多国语言。

注:请注意保管好你的应用密钥,防止其泄露。

推荐4:GenerateAllSetter

在这里插入图片描述

实际开发中还有一个非常常见的场景: 我们创建一个对象后,想依次调用 Setter 函数对属性赋值,如果属性较多很容易遗漏或者重复。

在这里插入图片描述

可以使用这 GenerateAllSetter 提供的功能,快速生成对象的所有 Setter 函数(可填充默认值),然后自己再跟进实际需求设置属性值。

插件5:Rainbow Brackets

在这里插入图片描述

给括号添加彩虹色,使开发者通过颜色区分括号嵌套层级,便于阅读

在这里插入图片描述

推荐6:CodeGlance Pro

在这里插入图片描述

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

在这里插入图片描述

推荐7:Statistic

在这里插入图片描述

代码统计工具。

在这里插入图片描述

在这里插入图片描述

推荐8:Presentation Assistant

在这里插入图片描述

显示快捷键操作的按键

推荐9:Key Promoter X

在这里插入图片描述

快捷键提示插件。当你执行鼠标操作时,如果该操作可被快捷键代替,会给出提示,帮助你自然形成使用快捷键的习惯,告别死记硬背。

推荐10:JavaDoc

在这里插入图片描述

alt+insert,执行操作:

在这里插入图片描述

推荐11:LeetCode Editor

在这里插入图片描述

在这里插入图片描述

在 IDEA 里刷力扣算法题

推荐12:GsonFormatPlus

在这里插入图片描述

根据 json 生成对象。

使用:使用alt + s 或 alt + insert调取。

在这里插入图片描述

举例:

{
    "name": "tom",
    "age": "18",
    "gender": "man",
    "hometown": {
        "province": "河北省",
        "city": "石家庄市",
        "county": "正定县"
    }
}

插件13:Material Theme UI

在这里插入图片描述

对于很多人而言,写代码时略显枯燥的,如果能够安装自己喜欢的主题将为开发工作带来些许乐趣。

IDEA 支持各种主题插件,其中最出名的当属 Material Theme UI。

在这里插入图片描述

安装后,可以从该插件内置的各种风格个选择自己最喜欢的一种。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/374797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu下不能切换中文,qt creator无法输入中文,sogo输入法(详细步骤)

目录&#xff1a;1、解决ubuntu 不支持切换中文&#xff0c;并安装sogo输入法步骤&#xff1b;2、解决Qt Creator不支持中文输入&#xff1a;详细步骤&#xff1a;一、解决ubuntu 不支持切换中文&#xff0c;并安装sogo输入法步骤&#xff1a;1、如果在键盘输入法系统中&#x…

Scala面向对象

与java的区别和联系 类的定义&#xff1a; class Person{ var name "scala" def sayHello(){ println("Hello,"name) } def getName name } 注意&#xff1a;如果在定义方法的时候指定了()&#xff0c;那么在调用的时候()可写可不写&#xff0c;如果在定…

【并发编程学习篇】深入理解CountDownLatch

一、CountDownLatch介绍 CountDownLatch&#xff08;闭锁&#xff09;是一个同步协助类&#xff0c;允许一个或多个线程等待&#xff0c;直到其他线程完成操作集。CountDownLatch使用给定的计数值&#xff08;count&#xff09;初始化。await方法会阻塞直到当前的计数值被coun…

【分布式缓存学习篇】Redis数据结构

一、Redis的数据结构 二、String 数据结构 2.1 字符串常用操作 //存入字符串键值对 SET key value //批量存储字符串键值对 MSET key value [key value ...] //存入一个不存在的字符串键值对 SETNX key value //获取一个字符串键值 GET ke…

[C++]继承

&#x1f941;作者&#xff1a; 华丞臧 &#x1f4d5;​​​​专栏&#xff1a;【C】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449;LeetCode 文章目录一、继承…

C/C++每日一练(20230227)

目录 1. 按要求排序数组 ★ 2. Z 字形变换 ★★ 3. 下一个排列 ★★ 1. 按要求排序数组 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中&#xff0c;数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同&#xff0c;则必须将它们按照数值大小…

新型智慧城市顶层规划及智慧应用综合解决方案

【版权声明】本资料来源网络&#xff0c;知识分享&#xff0c;仅供个人学习&#xff0c;请勿商用。【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间删除&#xff01;完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 业务需求分析系统功能需求分析 …

一文了解虚拟人主播

这两年&#xff0c;相信很多人都能在抖音、快手、微视等平台看到虚拟人主播的视频&#xff0c;形象逼真&#xff0c;表情动作自然&#xff0c;语言流畅&#xff0c;乍一看&#xff0c;就是一位真人&#xff01;那为什么会有这么多人或者企业选择用虚拟人来做主播呢&#xff1f;…

12万字数字政府县级智慧政务云平台建设方案WORD

【版权声明】本资料来源网络&#xff0c;知识分享&#xff0c;仅供个人学习&#xff0c;请勿商用。【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间删除&#xff01;完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 1.1 总体方案设计 云平台是云计…

评论对软件品牌很重要:有效地生成和管理评论

评论已成为几乎所有产品类别购买过程中的重要组成部分。 客户评论数据告诉我们&#xff0c;92% 的消费者使用在线评论来指导他们的大部分普通购买决策&#xff0c;软件也不例外。B2B 买家在做出购买决定之前会进行大量研究。 为什么评论对软件品牌很重要 B2B 买家特别希望听到已…

对IDEA中断点Suspend 属性理解

suspend的类型分为 1、ALL&#xff1a;有线程进入该断点时&#xff0c;暂停所有线程 2、Thread&#xff1a;有线程进入该断点时&#xff0c;只暂停该线程 讨论下不同线程在同一时间段都遇到断点时&#xff0c;idea的处理方法。假如在执行时间上&#xff0c;thread1会先进入断…

Android实现连线题效果

效果图全部正确&#xff1a;有对有错&#xff1a;结果展示&#xff0c;纯黑色&#xff1a;支持图片&#xff1a;实现思路仔细分析可以发现&#xff0c;连线题的布局可以分为两部分&#xff0c;一个是左右两列矩形&#xff0c;另一个是他们之间的连线。每个矩形的宽高都一样&…

并非从0开始的c++ day8

并非从0开始的c day8结构体结构体嵌套二级指针练习结构体偏移量内存对齐内存对齐的原因如何内存对齐文件操作文件的概念流的概念文本流二进制流文件缓冲区文件打开关闭文件关闭fclose文件读写函数回顾按格式化读写文件文件读写注意事项结构体 结构体嵌套二级指针练习 需求&am…

Delphi 中 FireDAC 数据库连接(定义连接)

一、定义连接&#xff08;FireDAC&#xff09;概述连接定义是一组参数&#xff0c;它定义了如何使用特定的FireDAC驱动将一个应用程序连接到DBMS。它相当于一个BDE别名、ADO UDL&#xff08;存储的OLEDB连接字符串&#xff09;或ODBC数据源名称&#xff08;DSN&#xff09;。关…

Vue下载安装步骤的详细教程(亲测有效) 1

目录 一、【准备工作】nodejs下载安装(npm环境) 1 下载安装nodejs 2 查看环境变量是否添加成功 3、验证是否安装成功 4、修改模块下载位置 &#xff08;1&#xff09;查看npm默认存放位置 &#xff08;2&#xff09;在 nodejs 安装目录下&#xff0c;创建 “node_global…

Spring中AOP的使用以及举例

1.AOP的简介 1.1 什么是AOP? AOP(Aspect Oriented Programming)面向切面编程&#xff0c;一种编程范式&#xff0c;指导开发者如何组织程序结构。 OOP(Object Oriented Programming)面向对象编程 我们都知道OOP是一种编程思想&#xff0c;那么AOP也是一种编程思想&#xf…

模块电源DC/DC直流隔离升压稳压HRB系列5v12v24v转50v100v110v200v220v250v300v400v

特点效率高达80%以上1*1英寸标准封装单电压输出稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上应用HRB 0.2~10W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#xff1a;4.5~9V、9~18V、及18~36VDC标准&#…

中小企业数字化自动化转型的方法

自动化是我们国内未来的趋势。智能制造的实现主要依托两个基础能力&#xff0c;一个是工业制造技术&#xff0c;另一个就是工业互联网。而自动化是工业制造技术的重要组成部分&#xff0c;是高度智能制造装备的核心部分&#xff0c;与承接着制造单元与工业互联网这两大核心。懂…

Polkadot 基础

Polkadot Polkadot联合并保护了一个不断增长的专业区块链生态系统&#xff0c;称为parachains。Polkadot上的应用程序和服务可以安全地跨链通信&#xff0c;形成真正可互操作的去中心化网络的基础。 真正的互操作性 Polkadot支持跨区块链传输任何类型的数据或资产&#xff0c;…

基于51单片机和proteus的智能调速风扇设计

此智能风扇是基于51单片机和proteus的仿真设计&#xff0c;功能如下&#xff1a; 1. Timer0 PWM控制电机转速 2. DHT11采集温湿度 3. LCD1602显示温湿度及电机状态 4. 按键控制电机加减速启停等 5. 串口控制电机加减速启停等 功能框图如下&#xff1a; Proteus仿真界面如下…