IntelliJ IDEA2023学习教程

IntelliJ IDEA2023学习教程,第1张

详细介绍idea开发工具及使用技巧

1. 2023版安装

1.1删除老版本

如果以前装有idea需要先删除,以避免冲突,在idea安装目录/bin/Uninstall.exe双击

IntelliJ IDEA2023学习教程,在这里插入图片描述,第2张

1.2 下载及安装

最新版本
https://www.jetbrains.com/idea/download/?section=windows
历史版本
https://www.jetbrains.com/idea/download/other.html

注意:一定要下载旗舰版
IntelliJ IDEA2023学习教程,在这里插入图片描述,第3张
卸载老版本 IDEA 完成后,双击刚刚下载好的 IDEA 2023.3 版本安装包。d框会提示选择安装路径,
, 然后点击 Next 按钮:
IntelliJ IDEA2023学习教程,在这里插入图片描述,第4张

IntelliJ IDEA2023学习教程,在这里插入图片描述,第5张
IntelliJ IDEA2023学习教程,在这里插入图片描述,第6张
IDEA 运行成功后,会d出如下对号框,强制用户需要先登录 JetBrains 账户才能使用,点击退出

1.3 新建演示工程

未来配置相关的信息,我们必须新建一个工程进入,选择一个最基础的java工程,如图
IntelliJ IDEA2023学习教程,在这里插入图片描述,第7张

2.常见配置

我们创建一个工程后,就可以File->Setting配置Idea的常见属性

2.1窗体外观和UI设置

2.1.1Appearance 外观

这里外观指的是idea窗口和按钮相关,不涉及到到编辑内容区
IntelliJ IDEA2023学习教程,在这里插入图片描述,第8张

2.1.2 New UI 2023新外观

2023新增一个UI模式,默认选中,取消重启后回到经典模式
IntelliJ IDEA2023学习教程,在这里插入图片描述,第9张

2.2内容区的字体和大小

在Appearance里调整的窗体的字体大小等,内容编辑区的字体和大小需要在Font里配置,

File | Settings | Editor | Font

IntelliJ IDEA2023学习教程,在这里插入图片描述,第10张

编辑区的字体动态大小
我们可以设置动态调整编辑区字体大小

File | Settings | Editor | General
IntelliJ IDEA2023学习教程,在这里插入图片描述,第11张
勾选后,我们在内容区,可以按住Ctrl+鼠标滚轮进行动态的放大和缩小

2.3编码设置UTF-8

我们一般采用utf-8编码

File | Settings | Editor | File Encodings

IntelliJ IDEA2023学习教程,在这里插入图片描述,第12张

2.4编辑标识*设置

idea2023内容区编辑后,系统是自动保存的,默认没有任何提示,可能有些用户不习惯,可以设置,正 *** 作未保存的内容区有个圆点,表示正在编辑
IntelliJ IDEA2023学习教程,在这里插入图片描述,第13张

File | Settings | Editor | General | Editor Tabs

IntelliJ IDEA2023学习教程,在这里插入图片描述,第14张

2.5方法参数补全

默认情况下,idea是不启用参数补全的(节约性能),这个在我们调用是不是很智能。
IntelliJ IDEA2023学习教程,在这里插入图片描述,第15张

File | Settings | Editor | General | Code Completion

IntelliJ IDEA2023学习教程,在这里插入图片描述,第16张
效果
IntelliJ IDEA2023学习教程,在这里插入图片描述,第17张
还有水印提示,这样就很智能了
IntelliJ IDEA2023学习教程,在这里插入图片描述,第18张

2.6 本地maven配置

File | Settings | Build, Execution, Deployment | Build Tools | Maven

IntelliJ IDEA2023学习教程,在这里插入图片描述,第19张

2.7 新建项目配置复用

1.idea主题、字体这些,一次配置后,以后新增项目都有效
2.编码、maven、工具这些,新建项目时依然要配置

1.utf-8编码:File | Settings | Editor | File Encodings

2.自动编译:File | Settings | Build, Execution, Deployment | Compiler

3.自动导包:File | Settings | Other Settings | Auto Import

4.git配置:File | Settings | Version Control | Git

5.maven配置:File | Settings | Build, Execution, Deployment | Build Tools | Maven

setting:当前项目配置
new projects Setup|Setting for new Project :新建项目配置,和setting配置一样

IntelliJ IDEA2023学习教程,在这里插入图片描述,第20张
进入后,可把maven和utf-8配置了

2.8文件生成模板

我们创建各种文件,都有对应模板,可以修改,最常见的是类的注释

File | Settings | Editor | File and Code Templates

2.8.1 修改模板

比如我们给类加上注释
IntelliJ IDEA2023学习教程,在这里插入图片描述,第21张
输入:

/** *@class: ${PACKAGE_NAME}.${NAME} *@description: ${description} *@author: jiangzengkui *@company: 教育家 *@create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} */

生成类的注释

/** * @class: com.jsoft.example.X * @description: * @author: jiangzengkui * @company: 教育家 * @create: 2023-12-15 12:32 */

2.8.2 新增模板

我们新增一个mybatis的后缀模板

IntelliJ IDEA2023学习教程,在这里插入图片描述,第22张
我们点击新增文件,模板名称就出现了

IntelliJ IDEA2023学习教程,在这里插入图片描述,第23张

2.9 自动导包

我们在粘贴复制代码时,所使用导的其他地方的类,可以自动导入

File | Settings | Editor | General | Auto Import

IntelliJ IDEA2023学习教程,在这里插入图片描述,第24张
都勾选上

Add unambiguous imports on the fly:自动导入不明确的结构 Optimize imports on the
fly:自动帮我们优化导入的包

2.10 导出导入配置

我们配置好的内容,可以保存下来,到其他地方使用,也可以导入,导出的是一个压缩包settings.zip

IntelliJ IDEA2023学习教程,在这里插入图片描述,第25张

3. 使用技巧

idea是一款高智能化的开发工具,很多技巧能提升开发效率

3.1 查看类图

把光标放置对应类上,右键,选择Diagrams-Show Diagram

IntelliJ IDEA2023学习教程,在这里插入图片描述,第26张
可以查看这个类及互相依赖的类的UML类图
IntelliJ IDEA2023学习教程,在这里插入图片描述,第27张

3.2关闭升级

如果比较习惯这个版本,可以关闭版本升级提示
IntelliJ IDEA2023学习教程,在这里插入图片描述,第28张

3.3 常用快捷键

idea里面非常多的快捷键,详细的可参考相关指南,个人觉得重要的列举入下

3.3.1 显示类属性和方法 ALT+7

场景:一个类的方法太多,想看到所有方法和属性,利于我们更快了解类的方法和属性
IntelliJ IDEA2023学习教程,在这里插入图片描述,第29张

3.3.2 代码注释ctrl + /

选中要注释的代码,执行以下 *** 作
单行注释 ctrl + /
多行注释 ctrl + shift + /

// System.out.println("ffff"); // System.out.println("ffff"); /*System.out.println("aa"); System.out.println("aa");*/ }

3.3.3 查看源码CTRL+dbclick

我们要看一个类的源码,有两种情况:

1.代码里已经有类,则按住ctrl+点击这个类
2.我们知道类名或者部分类名,trl + shift + t
这个可以用于查找jdk的源码和自己写的文件

3.3.4 查找CTRL+F

在工具条:Edit->find
Ctrl+F是在本页查找,Ctrl+Shift+F是全局查找
IntelliJ IDEA2023学习教程,在这里插入图片描述,第30张

3.3.5 查看类的继承关系 CTRL+H

在具体类里,或者光标放到到一个类名上
IntelliJ IDEA2023学习教程,在这里插入图片描述,第31张

3.3.6 查找类或者文件 CTRL+N

已知道某个类或者文件的名称(部分名称),查找这个类或者文件
IntelliJ IDEA2023学习教程,在这里插入图片描述,第32张

3.3.7 代码格式化Ctrl + Alt + L

或者菜单:code|Refmact code
打开最近关闭的文件

3.3.8 打开最近关闭的文件Ctrl + E

我们 *** 作了很多文件又关闭了,从包里找太麻烦,就把最近打开的文件调出来
IntelliJ IDEA2023学习教程,在这里插入图片描述,第33张

3.3.9 参数提示 Ctrl + P

忘记方法的参数了,直接Ctrl+p
IntelliJ IDEA2023学习教程,在这里插入图片描述,第34张

3.3.10 展开关闭左边菜单 Alt+1

为突出编辑区,可alt+1折叠左边菜单

3.3.11 查找类被哪些调用过 Alt+F7

在类里直接alt+f7,或把光标放置到类名上alt+f7,可以查询出这个类被哪些类调用过
IntelliJ IDEA2023学习教程,在这里插入图片描述,第35张

3.3.12 万能快捷键 Alt+Enter

Alt+Enter属于万能快捷键,在很多场景都有应用,在不知道怎么办时,不妨试试整个快捷键组合

1.接口实现类

把光标放置在接口名上,Alt+Enter,可快速生成实现类
IntelliJ IDEA2023学习教程,在这里插入图片描述,第36张

2…接口跳转到实现类

把光标放置在接口名上,Alt+Enter
IntelliJ IDEA2023学习教程,在这里插入图片描述,第37张

  1. 捕捉异常

IntelliJ IDEA2023学习教程,在这里插入图片描述,第38张

4.自动导包

IntelliJ IDEA2023学习教程,在这里插入图片描述,第39张

3.4后缀补全 Postfix Completion

我们在一个变量直接输入一下后缀,便可以生成相关代码
配置项:
File | Settings | Editor | General | Postfix Completion
IntelliJ IDEA2023学习教程,在这里插入图片描述,第40张

.var声明一个变量
. sout打印一个变量
.fori正循环一个数组,带索引
.forr倒循环一个数组,,带索引
.forfor(String s:sz),不用索引的循环,可用于数组\list
.iter和.for效果一样
.null生成if(xx==null) {}
.nn生成if(xx!=null) {}
.ifx>10.if 生成if(x>10){}

写一个代码,声明基本变量,对象,数组、list变量,尝试一下即知道效果了
IntelliJ IDEA2023学习教程,在这里插入图片描述,第41张

3.5缩写模板-Live Templates

缩写快捷方式能提升编码效率,可以用已有的,也可自定义
模板可以在两个地方定义
1.Editor – Live Templates 和

3.5.1 已有缩写

缩写生成代码
soutSystem.out.println();
mainpublic static void main(String[] args) {};
iterfor (Integer i : list) {}; 和后缀补全效果一样x.iter,容易混淆
ifnif (list == null) {}; 和后缀补全效果一样x.null,容易混淆
innif (list != null) {}; 和后缀补全效果一样x.nn,容易混淆

配置:File | Settings | Editor | Live Templates
IntelliJ IDEA2023学习教程,在这里插入图片描述,第42张

3.5.2 自定义缩写模板

可以自定义缩写模板,把我们日常用到比较多的粘贴复制等做成缩写

1.可以先新增一个分组,存放自己写的方法
IntelliJ IDEA2023学习教程,在这里插入图片描述,第43张
IntelliJ IDEA2023学习教程,在这里插入图片描述,第44张
2.选中一个分组,点击新增一个模板

IntelliJ IDEA2023学习教程,在这里插入图片描述,第45张
3.填写模板内容

IntelliJ IDEA2023学习教程,在这里插入图片描述,第46张

注意:$变量名$,如果没有表达式,就是光标所在地,点击回车到第二个变量

我们下面写几个自定义模板

(1)map遍历

Abbreviation:maplist Description:生成map的遍历 Template tex: for(String key : $VAR1$.keySet()){ $VAR2$ value = map.get(key); //map值 $EDN$ }

(2)定义字符串变量

Abbreviation:vars Description:声明字符串变量 Template tex: private String $VAR1$; //$VAR2$ $END$

(3)测试方法

Abbreviation:test Description:test测试方法 Template tex: @Test public void test$VAR1$(){ $END$ }

(3)优化方法注释

Abbreviation:* Description:优化函数注释 Template tex:注意不是/**,这样读不出表达式数据出来** * @Description: $description$ * @Create:$Date$ $Time$ * @Param: $param$ * @Return: $return$ */

注意:这里必须用*,Expand with:enter
IntelliJ IDEA2023学习教程,在这里插入图片描述,第47张
其变量表达式如下:
IntelliJ IDEA2023学习教程,在这里插入图片描述,第48张

3.5.2 缩写模板live template和后缀补全的区别

很多效果是一样吗,如null 迭代,但写法不一样,
缩写就是输入说些,后缀补全是在对象后面加.+后缀

3.6 取消单行显示 tabs 的 *** 作

默认打开文件过多,只显示一行,其他省略
可以设置为多行,不隐藏
IntelliJ IDEA2023学习教程,在这里插入图片描述,第49张
效果如图:
IntelliJ IDEA2023学习教程,在这里插入图片描述,第50张

4. idea工程项目

4.1 项目Project 和modul的理解

在 Eclipse 中我们有 Workspace(工作空间)和 Project(工程)的概念,在 IDEA
中只有 Project(工程)和 Module(模块)的概念。这里的对应关系为:

Eclipse 中 workspace 相当于 IDEA 中的 Project
Eclipse 中 Project 相当于 IDEA 中的 Module

2.在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。一个 Project
可以有多个 Module。目前主流的大型项目都是分布式部署的,结构都是类似这种多 Module 结构
IntelliJ IDEA2023学习教程,在这里插入图片描述,第51张

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

3.相比较于多 Module 项目,小项目就无需搞得这么复杂。只有一个 Module 的结构 IntelliJ IDEA 也是支持的,并且 IntelliJ IDEA 创建项目的时候,默认就是单Module 的结构的

DEA有两个概念,一个是Project(工程),一个是Module(模块)。
其中,一个模块相当于MyEclipse中的一个项目,也就是一个包。而一个工程就是由多个包组成的整体。在IDEA中,并没有对Project和Module进行强关联和强约束。主要起到一个项目定义、范围约束、规范类型的效果。

比如,我接了一个供方系统的工程,这个工程有一个前端的项目包,一个后端的项目包,也就是两个模块。那么我就会建一个文件夹叫做supplier(供方系统),然后把前后端的两个项目包都放在这个文件夹中。项目包就叫模块,整个文件夹就表示一个工程。

通过上面的介绍,我们知道:在 IntelliJ IDEA 中Project是最顶级的结构单元,然后就是Module,一个Project可以有多个Module。目前,主流的大型项目结构基本都是多Module的结构,这类项目一般是按功能划分的,比如:user-core-module、user-facade-module和user-hessian-module等等,模块之间彼此可以相互依赖。通过这些Module的命名可以看出,它们都是处于同一个项目中的模块,彼此之间是有着不可分割的业务关系的。

因此,我们可以大致总结出:一个Project是由一个或多个Module组成,尽量让各模块处于同一项目之中,此时彼此之间具有互相依赖的关联关系。在这里,之所以说“尽量”,是因为 IntelliJ IDEA 的Project是一个没有具备任何编码设置、构建等开发功能的,主要起到一个项目定义、范围约束、规范类型的效果,或许,我们也可以简单地理解Project就是一个单纯的目录,只是这个目录在命名上必须有其代表性的意义。在一般情况下,IntelliJ IDEA 是默认单Project单Module的,这时Project和Module合二为一,在没有修改存储路径的时候,显然Project对Module具有强约束作用啦!不过说实话,这里就是将Module的内容放在了Project的目录下,实际上还是Module自己约束自己。

4.2 Project Structure理解

File|Project Structure是项目工程的框架结构

4.2.1 左边面板结构

IntelliJ IDEA2023学习教程,在这里插入图片描述,第52张

4.2.2 项目信息

IntelliJ IDEA2023学习教程,在这里插入图片描述,第53张

4.2.2Modules信息

IntelliJ IDEA2023学习教程,在这里插入图片描述,第54张

4.2.3 lib信息Libraries

IntelliJ IDEA2023学习教程,Libraries,第55张

4.2.4 Facets

发布的web项目的web.xml
IntelliJ IDEA2023学习教程,在这里插入图片描述,第56张

4.2.5 打包方式artifacts

IntelliJ IDEA2023学习教程,在这里插入图片描述,第57张

4.3创建空项目

空项目没有任何东西,可以理解成一个文件夹
IntelliJ IDEA2023学习教程,在这里插入图片描述,第58张

4.4创建新工程

4.4.1 maven工程

我们选择创建maven工程
IntelliJ IDEA2023学习教程,在这里插入图片描述,第59张
这里重点是Build system:Itellij就是不带构建工具的普通java工程
生成maven工程后,可以按照maven的框架来构建代码,具体maven知识请参考mave知识讲解

4.4.2 web工程

虽然 目前都采用前后端分离技术,但老的项目依然在用
IntelliJ IDEA2023学习教程,在这里插入图片描述,第60张
选择je22和servlet
IntelliJ IDEA2023学习教程,在这里插入图片描述,第61张
工程结构

IntelliJ IDEA2023学习教程,在这里插入图片描述,第62张
查看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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jsoft</groupId> <artifactId>idea_web</artifactId> <version>1.0-SNAPSHOT</version> <name>idea_web</name> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>1.8</maven.compiler.source> <junit.version>5.9.2</junit.version> </properties> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> </plugin> </plugins> </build> </project>

配置tomcat
IntelliJ IDEA2023学习教程,在这里插入图片描述,第63张
IntelliJ IDEA2023学习教程,在这里插入图片描述,第64张
配置tomcat路径和端口
IntelliJ IDEA2023学习教程,在这里插入图片描述,第65张
部署
IntelliJ IDEA2023学习教程,在这里插入图片描述,第66张

4.4.2 springboot工程

IntelliJ IDEA2023学习教程,在这里插入图片描述,第67张

选择springboot版本及依赖功能
IntelliJ IDEA2023学习教程,在这里插入图片描述,第68张
springboot工程结构

IntelliJ IDEA2023学习教程,在这里插入图片描述,第69张
运营启动类,项目启动成功即可
IntelliJ IDEA2023学习教程,在这里插入图片描述,第70张

5.插件

插件通过 File | Settings | Plugins来管理的,优秀的插件能提升开发效率,下面介绍几个常用的插件IntelliJ IDEA2023学习教程,在这里插入图片描述,第71张

5.1 lombok插件

lombok是一个简写vo的get set 构造函数的第三方库,idea2023已经默认下载安装了lombok插件,spring也集成了lombok
IntelliJ IDEA2023学习教程,在这里插入图片描述,第72张
pom

<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> </dependency>

lombok注解

注册语法说明
@NonNullnull检查,如果是null,抛出异常,表述在变量前
@Data自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor,标注在类名上
@NoArgsConstructor生成无参构造函数,标注在类名上
@AllArgsConstructor生成全参构造函数,标注在类名上
@Getter @Setter生成get set,标注在属性上,
eg:@Getter @Setter private int age;

@Data @NoArgsConstructor @AllArgsConstructor public class User { private String id; private String name; public void test(@NonNull User user){ } }

5.2 翻译插件-Translation

市场输入Translation
IntelliJ IDEA2023学习教程,在这里插入图片描述,第73张
翻译:

选中内容,右键选中Translation

IntelliJ IDEA2023学习教程,在这里插入图片描述,第74张

5.3正则表达式-any-rule插件

插件市场输入any-rule
IntelliJ IDEA2023学习教程,在这里插入图片描述,第75张
在内容区右键
IntelliJ IDEA2023学习教程,在这里插入图片描述,第76张
IntelliJ IDEA2023学习教程,在这里插入图片描述,第77张
默认从开头对比到结尾,删除红框中的内容,/^表示开头,$/表示结尾。
IntelliJ IDEA2023学习教程,在这里插入图片描述,第78张
将单斜杠改为双斜杠

//默认从开头对比到结尾,删除红框中的内容,/^表示开头,$/表示结尾。 String regExp="/^\d{15,17}$/"; //将单斜杠改为双斜杠 regExp="\\d{15,17}";

5.4 序列化ID插件-erialVersionUID

市场输入generateSerial
IntelliJ IDEA2023学习教程,在这里插入图片描述,第79张
创建一个类,实现Serializable接口
右键,选择Generate,选择SerialVersionUID,则生成id
IntelliJ IDEA2023学习教程,在这里插入图片描述,第80张

public class Person implements Serializable { private static final long serialVersionUID = -5037059499277861230L; }

5.5 类时序图插件-sequenceDiagram

生成类的时序图
IntelliJ IDEA2023学习教程,在这里插入图片描述,第81张
光标置于方法上,右键
IntelliJ IDEA2023学习教程,在这里插入图片描述,第82张

5.6 数据库插件

idea2023已经已经集成了数据库插件
IntelliJ IDEA2023学习教程,在这里插入图片描述,第83张
配置数据库连接和下载驱动程序
IntelliJ IDEA2023学习教程,在这里插入图片描述,第84张
就可以对表进行查询及 *** 作了
IntelliJ IDEA2023学习教程,在这里插入图片描述,第85张

5.7 mybatis插件 -Free MyBatis Tool

市场输入Free MyBatis Tool
IntelliJ IDEA2023学习教程,在这里插入图片描述,第86张

生成mapper xml文件
快速从代码跳转到mapper及从mapper返回代码
mybatis自动补全及语法错误提示
集成mybatis generator gui界面
根据数据库注解,生成swagger model注

可以点击绿色小箭头,在mapper.java和xml对应切换,非常方便
IntelliJ IDEA2023学习教程,在这里插入图片描述,第87张
IntelliJ IDEA2023学习教程,在这里插入图片描述,第88张

5.8接口查询-RestfulTool

前端的请求路径,不用一个个的controller里找了,直接 Ctrl + Alt + /就可以帮助我们精确定位!
IntelliJ IDEA2023学习教程,在这里插入图片描述,第89张

提供了一个 Services tree 的显示窗口
双击 URL 直接跳转到对应的方法定义
一个简单的 http 请求工具
支持 Spring 体系 (Spring MVC / Spring Boot)
支持 JAX-RS
支持

Navigate -> Request Service

搜索 Mapping (Ctrl + Alt + /)

IntelliJ IDEA2023学习教程,在这里插入图片描述,第90张

5.9 json自动转vo类-GsonFormat

Web 应用中大量使用 RESTful API,而 API 中又大量使用 JSON 数据格式。每次将 JSON 格式的数据对应编写为实体类,并依次定义属性,是一个非常痛苦的事情。

IntelliJ IDEA2023学习教程,在这里插入图片描述,第91张
类里右键,选择Generate
IntelliJ IDEA2023学习教程,在这里插入图片描述,第92张

把json粘贴进入
IntelliJ IDEA2023学习教程,在这里插入图片描述,第93张

6.idea调试

修改程序问题是程序员的日常工作,有程序员喜欢用打印数据的模式跟踪,这种模式是非常低效的,擅长IDEA的调试模式,能更容易跟踪并发现问题。

6.1启动调试模式

单独java类测试,右键选择调试模式
IntelliJ IDEA2023学习教程,在这里插入图片描述,第94张
tomcat调试,选择爬虫图标
IntelliJ IDEA2023学习教程,在这里插入图片描述,第95张

6.2基础调试介绍

测试代码

package com.example.newweb; import java.util.ArrayList; import java.util.List; /** * @class: com.example.newweb.Person * @description: * @author: jiangzengkui * @company: 教育家 * @create: 2023-12-20 18:11 */ public class Person { public static void main(String[] args) { System.out.println("main"); Person person = new Person(); person.t(); } public void t(){ System.out.println("t-1111"); String s1="1"; List<String> list=new ArrayList<>(); list.add("t-1"); list.add("t-2"); dd(); String s2="t-2"; System.out.println("t-2222"); } public void dd(){ List<String> list=new ArrayList<>(); list.add("dd-1"); list.add("dd-2"); System.out.println("dd3"); } }

1.在左侧要调试暂停的地方点击一下,标注最常用的行断点,如图

IntelliJ IDEA2023学习教程,在这里插入图片描述,第96张

2.启动调试模式

点击debug,启动

3.调试面板介绍

点击启动调式后,代码将跳转到打了断点的行上,并展示调试面板
IntelliJ IDEA2023学习教程,在这里插入图片描述,第97张
(1)调试按钮
最重要的三个调试按钮

step overIntelliJ IDEA2023学习教程,在这里插入图片描述,第98张
点击此按钮,或者F8,就是一行一行往下执行,右边变量展示区展示每步骤变量的变化
step intoIntelliJ IDEA2023学习教程,在这里插入图片描述,第99张
这按钮是进入子方法的意思,一般应用场景是,方法里子方法,如果我们不想跟踪这个子方法的内部执行,则点击Step over,如果要进入这个子方法,则点击此按钮,进入此子程序,比如jdk自带的方法,我们就不执行,我们自己写的程序就step into

IntelliJ IDEA2023学习教程,在这里插入图片描述,第100张

step outIntelliJ IDEA2023学习教程,在这里插入图片描述,第101张
跳出子方法

其他方法

resume programIntelliJ IDEA2023学习教程,在这里插入图片描述,第102张
恢复程序运行,但如果该断点下面还有断点,则停在下一个断点上。
stopIntelliJ IDEA2023学习教程,在这里插入图片描述,第103张
停止所有断点调试,执行程序。
returnIntelliJ IDEA2023学习教程,在这里插入图片描述,第104张
返回到第一个断点
view breakpointsIntelliJ IDEA2023学习教程,在这里插入图片描述,第105张
查看所有断点
mute breakpointsIntelliJ IDEA2023学习教程,在这里插入图片描述,第106张
所有断点失效

变量跟踪区
调试内容的展示区,可跟踪变量的变化情况
IntelliJ IDEA2023学习教程,在这里插入图片描述,第107张
在代码编辑区也有提示水印

IntelliJ IDEA2023学习教程,在这里插入图片描述,第108张

6.3高级调试技巧

6.3.1方法断点

功能:在方法入口(entry)和出口(exit)都会自动暂停。在方法入口暂停可以让我们从头调试整个方法,而在方法出口处暂停可以让我们看到方法执行完毕时,方法内各个变量的数据情况。
IntelliJ IDEA2023学习教程,在这里插入图片描述,第109张

一个比较好的应用场景
有时候我们的一个接口会存在很多实现类,我们短时间内难以分析究竟是运行到了哪个实现类中,这个时候就可以使用方法断点,我们将断点打在接口方法上,运行到该方法时,会自动跳到实际执行的实现类,无需通过上下文环境去分析是哪个实现类。
例如:
IntelliJ IDEA2023学习教程,在这里插入图片描述,第110张

public interface Animal { void t(); }public class Person implements Animal{ public static void main(String[] args) { System.out.println("main"); Person person = new Person(); person.t(); } public void t(){ System.out.println("t-1111"); String s1="1"; List<String> list=new ArrayList<>(); list.add("t-1"); list.add("t-2"); } }

6.3.2 字段断点

在字段左侧点击,增加字段断点,默认修改这个字段的值时,形成断点暂停,便于我们观察
IntelliJ IDEA2023学习教程,在这里插入图片描述,第111张
断点上点击右键即d出下图可匹配
IntelliJ IDEA2023学习教程,在这里插入图片描述,第112张

6.3.3 debug调试条件设置

比如在循环遍历中,我们不需要那么多循环遍历,可以修改遍历的条件,只把预期想执行的循环来调试,则可以设置条件
例如:

IntelliJ IDEA2023学习教程,在这里插入图片描述,第113张
这里我们要调试循环,这么多循环是我们不需要的,我们只想观察count=9时候的调试,则在调试图标上右键,输入count==9即可,如果是大于则设置count>9
IntelliJ IDEA2023学习教程,在这里插入图片描述,第114张
如果是字符串,则用字符串变量.equasl(预期值)
如:
IntelliJ IDEA2023学习教程,在这里插入图片描述,第115张

6.3.4 Stream 调试(Trace Current Stream Chain)

我们跟踪Stream时,可以设置
IntelliJ IDEA2023学习教程,在这里插入图片描述,第116张
功能:当我们暂停在 Stream 的处理代码行时,可以将 Stream 的整个处理流程以图形化界面的形式展示。
IntelliJ IDEA2023学习教程,在这里插入图片描述,第117张

6.3.5 表达式设置

我们可以修改一些值,改变程序的运行逻辑,比如:
IntelliJ IDEA2023学习教程,在这里插入图片描述,第118张
我们正常程序可能很难获得id小于0的数据,就无法测试分支else,那我们可以手动改变他
。启动调试(必须启动),在调试栏点击…,d出
IntelliJ IDEA2023学习教程,在这里插入图片描述,第119张
把变量id=0,在真实情况下可以修改任何对象、变量的值
IntelliJ IDEA2023学习教程,在这里插入图片描述,第120张
再比如:
我们可以修改对象的值
IntelliJ IDEA2023学习教程,在这里插入图片描述,第121张
修改后的效果,测试对象的值就改变了:
IntelliJ IDEA2023学习教程,在这里插入图片描述,第122张

6.4 远程调试

功能:调试部署在远程服务器上的代码。
远程调试最常见的使用场景是排查线上问题,下面举个例子。
有一个用户(userId=8888)请求某个接口会出现异常,但是其他用户是正常的,包括我们的各种测试账号
此时我们可以使用测试账号(userId=1222),在预发布环境向该接口发起请求,并且我们会通过远程 Debug 在接口入口处拦截住该请求,然后我们通过执行表达式功能,将userId从1222修改为8888,则接下来我们就可以模拟出现问题的用户来调试整个接口了,从而帮助我们快速定位到问题。

注意:使用远程Debug的环境必须不能对外网访问,否则可能存在安全隐患。

6.4.1配置远程调试

IntelliJ IDEA2023学习教程,在这里插入图片描述,第123张

IntelliJ IDEA2023学习教程,在这里插入图片描述,第124张

IntelliJ IDEA2023学习教程,在这里插入图片描述,第125张

6.4.2启动服务

以springboot为例子,启动服务,把配置的参数带上
如:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar java-study-demo-0.0.1-SNAPSHOT.jar

启动后效果:
IntelliJ IDEA2023学习教程,在这里插入图片描述,第126张

就可以利用本地代码做远程调试了

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/13518631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024-02-11
下一篇 2024-02-18

发表评论

登录后才能评论

评论列表(0条)

保存